【问题标题】:nginx HTTPS Redirectnginx HTTPS 重定向
【发布时间】:2015-05-09 22:11:39
【问题描述】:

我正在尝试让我的网站仅使用 HTTPS。我已经查看了整个 stackoverflow 并尝试了该站点的 nginx 设置文件的许多建议设置,但我仍然无法让所有地址组合正常工作。我需要在文件中进行哪些更改才能使其正常工作?

这两个地址组合不会重定向 -

这是设置文件的样子 -

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

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

server {
    listen [::]:443 default_server ipv6only=off;
    server_name example.com www.example.com;

    # rest of config file...
}

【问题讨论】:

  • 用 $server_name 替换 $host 变量。应该工作!

标签: redirect ssl nginx https


【解决方案1】:

我通过以下方式在我的服务器上完成此操作:

server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}

乍一看,您的配置看起来不错,但return directive documentation 确实指出了您的配置可能遇到的旧版本 nginx 的一些限制。

最后,在安全服务器配置中,您可以包含一个 HTTP Strict Transport Security 指令,以使客户端将来仅通过 TLS 连接到您的域。

    add_header Strict-Transport-Security max-age=31536000;

【讨论】:

  • 我有 TLS 部分。您发布的内容几乎相同。如果我删除端口前面的[::]: 部分,那么我将涵盖我发布的第一个场景,但它仍然无法处理domain.com
  • 您是否在servername 指令中同时列出了domain.comwww.domain.com
  • 在80端口的服务器中,没有。我在端口 443 服务器中。我应该在两个服务器区域都列出吗?谢谢!
  • 能否请您发布您当前的配置以澄清?
【解决方案2】:

下面的配置会将 example.com 重定向到 https://example.com

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

server {
       listen         443 ssl;
       server_name    *.example.com;

       [....]
}

但是,如果您想将所有域重定向到 https:

  • 将 server_name 更改为 _ (server_name _;)
  • 将重定向规则中的 $server_name 变量替换为 $host(返回 301 https://$host$request_uri;)

【讨论】:

    【解决方案3】:

    你可以这样使用

    server {
        listen          192.168.1.1:443 ssl;
        server_name     www.example.com;
        ssl_certificate www.example.com.crt;
        ...
    }
    
    server {
        listen          192.168.1.2:443 ssl;
        server_name     www.example.org;
        ssl_certificate www.example.org.crt;
        ...
    }
    

    http://nginx.org/en/docs/http/configuring_https_servers.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 2020-03-21
      • 2016-03-10
      • 2015-08-16
      • 2015-02-14
      • 2019-06-04
      • 2019-08-16
      • 1970-01-01
      相关资源
      最近更新 更多