在 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 等效页面,从而节省服务器的重定向以及将他们带到您希望的位置的资源。
正如所暗示的,当你提出问题时,请尝试证明你已经自己尝试过让问题解决。