我可以成功地将流量从端口80路由到HTTPS,并且我还可以成功获取Let's Encrypt SSL证书。但是我的问题从我想同时两者都开始。
每当证书到期时,我都必须调整配置以通过“让我们加密”挑战。那就不好了。
以下是成功
的挑战配置server {
listen 80;
listen [::]:80;
server_name example.com *.example.com;
#for certbot challenges (renewal process)
location ~ /.well-known/acme-challenge {
allow all;
root /data/letsencrypt;
}
root /data/letsencrypt;
index index.html;
}
这是将流量路由到 HTTPS
的配置server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com *.example.com;
location / {
return 301 https://$host$request_uri;
}
return 444;
}
每当我开始尝试将它们组合在一起时,到HTTPS的路由似乎就接管了,挑战也随之克服。
注意到在Docker环境中我将Nginx用作反向代理也可能很有用,因此从HTTP路由到HTTPS,然后从那里反向代理其他服务。
答案 0 :(得分:0)
server{
listen 80;
listen [::]:80;
server_name example.com *.example.com;
#for certbot challenges (renewal process)
location ~ ^/.well-known/acme-challenge {
allow all;
root /data/letsencrypt;
}
location / {
return 301 https://$host$request_uri ;
}
}
应该做到这一点。
如果端口80以/.well-known/acme-challenge开头,则会进行挑战。
其他:301到https。
检查的优先级首先是正则表达式(位置〜^ blablabla),然后是常规字符(位置/ {)
如果它不起作用,您正在进行什么交互?