首页 > 解决方案 > Https 在 url 中需要端口 80

问题描述

使用 Nginx 1.12.1 版本没有端口没有指定 URL 将不适用于 Https 即https://test.domain.com:80

下面是代码:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        ssl on;
        server_name ~^(?<subdomain>[^.]+)\.domain.com$;

        ssl_certificate /etc/ssl/ssl_certificate.cer;
        ssl_certificate_key /etc/ssl/sslnew.key;

        root /var/www/$subdomain;
        index index.html;
        location / {
                try_files $uri $uri/ =404;

        }

}

如果我删除“SSL on”,那么 https 将不起作用,但它可以在没有端口号的情况下工作,即 test.domain.com。

标签: sslnginxhttpsnginx-reverse-proxy

解决方案


http假定端口 80 并https假定端口 443。如果您希望浏览器覆盖这些默认值,则必须在 URL 中指定端口。

正确的解决方案是http通过端口 80 和https端口 443 提供,在这种情况下,不需要在 URL 中提供端口,可以从方案(httphttps)中假设。

例如:

server {
    listen  80;
    listen  443 ssl;
    ...
}

有关详细信息,请参阅此文档


推荐阅读