Nginx:将所有 www. 和非 SSL 流量重定向到非 www 和 https

Nginx:将所有 www. 和非 SSL 流量重定向到非 www 和 https

在 Nginx 中,是否可以将所有 www. 和非 SSL 流量重定向到单个服务器块中的对立面?如果可以,怎么做?如果不行,处理这些规则的最佳方法是什么?

以下是我想要实现的目标:

http://www.example.com   >  https://example.com
https://www.example.com  >  https://example.com
http://example.com       >  https://example.com

提前致谢!

答案1

http 到 https 部分是这样实现的:

if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

关于 www 到非 www 的部分已经回答过很多次了:

https://stackoverflow.com/questions/7947030/nginx-no-www-to-www-and-www-to-no-www

奖励:由于您似乎想要“无处不在的 TLS”,因此我强烈建议您考虑包含此 Strict-Transport-Security 标头:

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';

这将帮助浏览器、搜索引擎等记住您希望访问者始终转到 https 等效页面,从而节省服务器的重定向以及将他们带到您希望的位置的资源。

正如所暗示的,当你提出问题时,请尝试证明你已经自己尝试过让问题解决。

相关内容