50人参与 • 2025-11-02 • SSL
你可以选择使用 let's encrypt 提供的免费 ssl 证书,或者购买其他 ca(证书颁发机构)提供的证书。以 let's encrypt 为例:
使用 let's encrypt 获取免费证书
运行以下命令来请求证书:
sudo certbot --nginx -d your_domain.com
certbot 会自动生成证书并配置 nginx,使其支持 https。如果配置成功,certbot 会自动更新你的 nginx 配置文件,将 http 重定向到 https。
手动获取 ssl 证书
如果你购买了 ssl 证书,通常证书提供商会提供 .crt 和 .key 文件。你需要将这些文件上传到服务器。
如果你使用 certbot,nginx 配置会自动更新,但如果你手动配置 ssl,请按照以下步骤进行:
备份原始的 nginx 配置文件:
在进行修改之前,备份你的 nginx 配置文件以防万一:sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
编辑 nginx 配置文件:
打开你的站点配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/。
sudo vi /etc/nginx/nginx.conf
如果你使用了 certbot,nginx 的 ssl 配置可能已经完成。如果是手动配置,添加以下 ssl 配置:
server {
listen 80;
server_name your_domain.com www.your_domain.com;
# 301 重定向 http 到 https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
# ssl 配置
ssl_certificate /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
ssl_session_cache shared:ssl:1m;
ssl_session_timeout 5m;
# 强制使用最新的 ssl 协议
ssl_protocols tlsv1.2 tlsv1.3;
ssl_ciphers 'ecdhe-ecdsa-aes128-gcm-sha256:ecdhe-rsa-aes128-gcm-sha256:...';
ssl_prefer_server_ciphers on;
# 其他配置
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}测试 nginx 配置:
在重新加载 nginx 之前,先测试配置文件是否正确:
sudo nginx -t
如果显示 syntax is ok,表示配置没有问题。
重新加载 nginx:
重新加载 nginx 配置以应用更改:
sudo systemctl reload nginx
如果你使用的是 let's encrypt,你可以通过 certbot 自动更新证书。certbot 默认会设置自动续期,证书将在到期前自动更新。
可以通过以下命令手动测试自动续期:
sudo certbot renew --dry-run
确保 443 端口(https)已经打开,并且防火墙允许该端口的流量。你可以使用以下命令查看防火墙规则,并允许 443 端口:
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --reload
现在,你可以通过 https://your_domain.com 来访问你的网站。如果一切配置正确,访问时会看到一个安全的 https 连接。
到此这篇关于nginx配置为https的文章就介绍到这了,更多相关nginx配置为https内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论