Nginx:“添加”https 和将 http 重定向到 https 有什么区别?

Nginx:“添加”https 和将 http 重定向到 https 有什么区别?

我有两个服务器块。它们都做类似的事情:允许我使用 https。

现在我只是想知道,在一种情况下,我将所有流量从 http 重定向到 https。在另一种情况下,似乎我允许 https。

有人能给我解释一下有什么区别吗?自从我申请域名以来,即使http://test.example.com,在两种情况下我仍然会重定向到 https。

有什么区别吗?

以下是两个文件:

文件 1-将 http 重定向到 https

server {
    listen 80;
    listen [::]:80;
    server_name test.example.com
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/test/staging/current;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name test.example.com;

    include snippets/ssl-test.example.com.conf;
    include snippets/ssl-params.conf;

    location / {
        try_files $uri $uri/ =404;
    }
}

文件 2 - 添加 https

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/test/staging/current;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name test.example.com;
    include snippets/ssl-test.example.com.conf;
    include snippets/ssl-params.conf;

    location / {
        try_files $uri $uri/ =404;
    }
}

答案1

从您问题的详细信息来看,文件 2 似乎接受两者的连接,http并且https不需要从一个重定向到另一个。

然而:

  • 您的应用程序可能会强制连接处于 状态https,从而导致重定向(如果http检测到),或者
  • 您的ssl-params.conf文件可能包含严格的运输安全导致浏览器强制连接https

答案2

第二个配置不应该重定向。当您之前测试第一个配置时,您的浏览器可能缓存了重定向(缓存很难删除,请尝试其他浏览器(配置文件))。

$scheme = http而且,当您匹配然后重定向时,您仍然可以使用带有重定向的第二个配置。这可以简化您的配置。

相关内容