nginx - 用于 Certbot/Letsencrypt 的 NGINX 配置
问题描述
我无法在我的NGINX/Ubuntu18.04实例上启动并运行certbot。我通过演练在
我选择了certbot重定向,它更新了我网站的配置文件。
我的配置文件如下所示:
server {
listen 80;
listen [::]:80;
root /var/www/punkmap.com/html;
index index.html index.htm index.nginx-debian.html;
server_name punkmap.com www.punkmap.com;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/punkmap.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/punkmap.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
certbot对我的配置文件所做的添加破坏了我的站点。通过删除certbot添加到我的配置文件中的代码行很容易修复。但是,我在 Internet 上找不到任何信息来说明如何解决该问题。
我的站点配置应该是什么样的?
谢谢!
泰勒
解决方案
问题是您listen
在同一个服务器块中有两个指令。您最好的解决方案是手动编辑您的 nginx 配置以拆分为两个服务器块。非 ssl(端口 80)块应重定向到 ssl(端口 443)块。像这样的东西应该工作:
server {
listen 80;
listen [::]:80;
server_name punkmap.com www.punkmap.com;
return 301 https://$host$request_uri;
}
server {
root /var/www/punkmap.com/html;
index index.html index.htm index.nginx-debian.html;
server_name punkmap.com www.punkmap.com;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/punkmap.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/punkmap.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
然后在将来升级时,请确保传递--cert-only
参数,以免您的配置再次被弄乱。请注意,我删除了所有由 Certbot 管理的 #评论,因为在此之后,它们将由您管理。
推荐阅读
- c# - 使用字符串插值插入常量是否存在运行时开销?
- c# - EF.net Core 异步数据加载到 Observable
- python - 我将如何计算不同二维向量行之间的 L2 或欧几里得距离
- python - 为什么 numpy.sum 没有给我正确的结果?
- intersection-observer - Use IntersectionObserver with rootMargin to change when reaching 50% viewport height
- git - 为什么 git branch --merged 不显示所有合并的分支?
- javascript - client.channels.get(id).send() 不工作
- .net - GC 从我下面收集本地对象
- r - 将两个不同数据帧中的匹配值相加
- html - 为什么我的嵌套网格容器没有创建等宽的列?