nginx 将所有 https 请求重定向到本地 https 门户

nginx redirect all https requests to local https portal

我有本地门户(强制门户),它是 https 并且将所有 http 请求重定向到本地 https 工作正常。 但是将请求从 https 重定向到本地 https 门户根本不起作用。 这里我是如何配置 nginx 的:

upstream flask_portal {
    server unix:/tmp/flask_portal.sock;
}

server {
    listen 172.31.3.1:443 default_server;
    rewrite ^(.*) https://my_site.com?url=$server_name;
}

server {
    listen 172.31.3.1:80 default_server;
    listen 172.31.3.1:443 ssl;
    server_name my_site.com;
    ssl_certificate      my_site.com.cert;
    ssl_certificate_key  my_site.com.key;

    location / {
        uwsgi_pass flask_portal;
        include uwsgi_params;
    }
}

当我用 curl 测试它时 https://www.google.com 它报告:

curl: (35) Unknown SSL protocol error in connection to www.googlw.com:443

我认为 nginx 应该将 www.google com 重定向到 my_site.com 并且 curl 应该询问 my_site 证书,但它没有。

不能 重定向 https,因为您的证书与 www.google.com 或 *.google.com 不匹配,因此浏览器(理所当然地)将失败与它握手。 Curl(和你的浏览器)甚至永远不会看到重定向,因为这需要一次成功的握手。

可以做的是告诉浏览器你是一个强制门户https://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection