下面是详细的Nginx设置HTTPS的方法步骤攻略。
1. 生成SSL证书
首先,需要购买SSL证书或者使用免费证书服务(如Let's Encrypt)。这里以使用Let's Encrypt为例:
- 使用certbot工具获取证书
你可以在服务端安装Certbot工具,并使用下面的命令获取证书并自动配置Nginx。
sudo certbot --nginx
- 手动获取证书
若不想使用certbot,也可以手动获取证书。可以参照下面步骤来手动获得证书:
- 安装acme.sh
curl https://get.acme.sh | sh
- 创建一个域名
在控制面板中,添加一个DNS解析,指向您的服务器IP地址。
- 生成证书
acme.sh --issue -d your-domain.com --nginx
之后,证书将被生成并存储在~/.acme.sh/your-domain.com目录中。
2. 修改Nginx配置文件
- 打开Nginx的配置文件
sudo vi /etc/nginx/nginx.conf
- 找到以下行,并取消注释(#):
events {
# ...
}
- 添加以下配置,以支持HTTPS:
http {
# ...
server {
...
listen 443 ssl;
ssl_certificate /path/to/your_domain.crt;
ssl_certificate_key /path/to/your_domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
...
}
}
注意:将"/path/to/your_domain.crt"和"/path/to/your_domain.key"替换为您生成的证书路径。
- 重启Nginx
sudo systemctl restart nginx
这样,您的网站现在已支持HTTPS协议。
示例说明
- 示例一:使用Let's Encrypt获取证书
假设您已经按照上述步骤安装完Certbot工具。现在您需要为您的站点(如www.example.com)配置HTTPS。
sudo certbot --nginx -d www.example.com
Certbot将为您的站点申请一个证书,并自动更新Nginx配置以支持HTTPS。
- 示例二:手动获取证书
假设您已经安装好了acme.sh工具,并拥有DNS解析指向您的服务器IP地址。现在您需要获取证书并使用Nginx支持HTTPS协议。
acme.sh --issue -d www.example.com --nginx
sudo vi /etc/nginx/nginx.conf
然后添加以下配置到配置文件中:
server {
listen 443 ssl;
ssl_certificate /root/.acme.sh/www.example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/www.example.com/www.example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
...
}
注意:需要将 acme.sh 生成的证书路径填入配置文件中。
保存配置文件,并重启Nginx服务器。
sudo systemctl restart nginx
这样,您的网站现在已支持HTTPS连接。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx设置HTTPS的方法步骤 - Python技术站