【发布时间】:2018-12-28 17:28:14
【问题描述】:
这个 nginx 配置应该重定向
http://example.com
http://www.example.com
https://www.example.com
致https://example.com
server {
server_name example.com;
root {:siteRoot};
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
index index.html;
}
server {
server_name example.com www.example.com;
listen 80;
return 301 https://example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://example.com$request_uri;
}
它工作正常,但它可以以某种方式合并以避免所有重复代码吗?
【问题讨论】:
-
是的,你可以,但你需要在 nginx 中使用 ifs 和 "if is evil" nginx.com/resources/wiki/start/topics/depth/ifisevil。您可以使用两个域设置一个服务器支架,并使用 ifs 方案分隔,然后域在同一个“服务器”支架中分别处理它们。就我个人而言,我会让它保持这种状态。变量 $host 和 $scheme 可用于在 ifs 中进行比较。如果您在这方面需要任何帮助,我只是想澄清一下。 (在该链接的最后一部分,它解释了如何正确使用“ifs”,如果你仍然想使用它们)。希望我能帮助
标签: http nginx https webserver nginx-config