加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

如何使用Nginx修复http重定向?

发布时间:2020-12-13 21:21:45 所属栏目:Nginx 来源:网络整理
导读:我有一个网页,http重定向有点破碎. 目前的行为是这样的: www.example.com,example.com,http://www.example.com,http://example.com,https://www.example.com都被重定向到https://www.example.com 和 https://example.com收到错误说拒绝连接. 我希望行为像这

我有一个网页,http重定向有点破碎.

目前的行为是这样的:

www.example.com,example.com,http://www.example.com,http://example.com,https://www.example.com都被重定向到https://www.example.com

https://example.com收到错误说拒绝连接.

我希望行为像这样:

example.com,https://example.com重定向到https://example.com

www.example.com,https://www.example.com重定向到https://www.example.com

这是我的Nginx配置文件

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

server {
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;
        include snippets/ssl-example.com.conf;
        include snippets/ssl-params.conf;

        root /var/www/html;

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

        server_name _;

        location ~ /.well-known {
                allow all;
        }

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

原因是因为我希望这些链接起作用

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com

https://hstspreload.org/?domain=example.com

https://hstspreload.org/?domain=www.example.com

最佳答案
你有两个独立的问题:

>您的请求全部重定向到example.com,无论最初访问哪个特定域.

发生这种情况是因为您使用的$server_name变量实际上是给定服务器上下文中的静态变量,并且与$http_host的关系非常遥远.

正确的方法是使用$host(基本上是带有一些边角清理的$http_host).

>您在尝试联系https://example.com时收到连接问题,但没有https://www.example.com.

您的问题中没有足够的信息来确定此问题的确切来源.

它可能是DNS问题(example.com的A / AAAA记录设置在IP地址,而不会对https端口进行适当的绑定).

这可能是证书不匹配的问题:

>您的证书是否涵盖example.com和www.example.com?如果没有,那么你不能兼得.
>如果您有单独的证书,您可能还需要获取单独的IP地址,否则可能会因为缺少SNI而无法阻止大量用户访问您的站点.

值得注意的是,还应该指出的是,对于访问网站的方式没有统一的表示法通常是草率的做法.特别是如果你对SEO有任何顾虑,最好的做法是决定你是否想要使用www,并坚持使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读