下面详细讲解如何使用Nginx和SSL搭建HTTPS网站:
确认SSL证书
在开始搭建HTTPS网站之前,需要确保已经拥有有效的SSL证书。若没有,可以在任何一家可靠的证书提供商处购买。购买完证书后,需要将证书下载到本地存储。
安装Nginx
首先,需要安装Nginx,可以在终端中使用以下命令安装:
sudo apt-get update
sudo apt-get install nginx
配置SSL证书
安装完Nginx后,需要配置SSL证书。首先需要将SSL证书文件上传到服务器上,然后在Nginx的配置文件中进行配置。以下为示例配置文件:
server {
listen 80;
server_name example.com www.example.com;
return301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privkey.pem;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
需要修改配置文件中的以下内容:
- server_name: 改为自己的域名。
- ssl_certificate: 替换成服务器上的证书文件路径。
- ssl_certificate_key: 替换成服务器上的私钥文件路径。
- root和index: 修改成自己网站的根目录和默认主页。
测试网站
修改完配置文件后,需要重启Nginx并测试网站是否正常。在终端中依次输入以下命令:
sudo systemctl restart nginx
sudo systemctl status nginx
如果没有出现错误信息,表示Nginx已成功重启。然后在浏览器中输入网站的URL,即可访问网站。如果浏览器中出现绿色的锁图标,且网站URL以https开头,则证明HTTPS已经成功启用,说明搭建HTTPS网站已经完成。
示例说明
下面给出两个实际的示例,以帮助更好地理解搭建HTTPS网站的过程:
示例1
以Ubuntu 18.04系统为例,使用Let's Encrypt证书来搭建HTTPS网站。
- 安装Certbot客户端,用于自动获取、安装和配置Let's Encrypt证书。
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
- 获取证书并完成配置,使用以下命令即可:
sudo certbot certonly --webroot --agree-tos --email admin@example.com --webroot-path=/var/www/example -d www.example.com
- 修改Nginx的配置文件。
在/etc/nginx/sites-available/目录下,新建一个新的配置文件,例如example.com.conf,并且添加以下内容:
server {
listen 80;
server_name example.com www.example.com;
location /.well-known/acme-challenge/ {
root /var/www/example;
}
location / {
return 301 https://www.example.com$request_uri;
}
}
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
需要将example.com.conf文件中的server_name、ssl_certificate、ssl_certificate_key和ssl_trusted_certificate替换成自己的域名和证书路径。
- 重启Nginx服务器和测试网站。
sudo systemctl restart nginx
sudo systemctl status nginx
在浏览器中输入网站URL,如果正常访问,说明HTTPS搭建成功。
示例2
以CentOS 7系统为例,使用自签名证书来搭建HTTPS网站(不推荐使用自签名证书)。
- 生成私钥和自签名证书。
sudo openssl req -x509 -nodes -days365 -newkey rsa:2048 -keyout /etc/pki/tls/private/mykey.key -out /etc/pki/tls/certs/mycert.cert
在上述命令中,需要填写一些证书信息,例如国家、省份、城市、组织机构名、主题等。
- 修改Nginx的配置文件。
在/etc/nginx/conf.d/目录下,新建一个新的配置文件,例如example.com.conf,并添加以下内容:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
root /var/www/example;
index index.html;
ssl_certificate /etc/pki/tls/certs/mycert.cert;
ssl_certificate_key /etc/pki/tls/private/mykey.key;
location / {
try_files $uri $uri/ =404;
}
}
需要将example.com.conf文件中的server_name、ssl_certificate和ssl_certificate_key替换成自己的域名和证书路径。
- 重启Nginx服务器和测试网站。
sudo systemctl restart nginx
sudo systemctl status nginx
在浏览器中输入网站URL,如果正常访问,说明HTTPS搭建成功。
以上就是如何使用Nginx和SSL搭建HTTPS网站的完整攻略和两个示例说明,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx+SSL搭建 HTTPS 网站 - Python技术站