NGINX重定向到HTTPS,同时仍保持“让我们加密挑战”的HTTP路由

时间:2019-11-05 11:20:48

标签: nginx ssl-certificate lets-encrypt nginx-reverse-proxy nginx-config

我可以成功地将流量从端口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,然后从那里反向代理其他服务。

1 个答案:

答案 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),然后是常规字符(位置/ {)

如果它不起作用,您正在进行什么交互?