是否可以将重定向放在 1 个单独的服务器块中,以将任何没有 www 的 https(端口 443)重定向到 https://www...?我不想将该重定向放在每个特定域的每个单独的服务器块中。
我目前有这个,但它不允许 nginx(在 Windows 中)启动:
server {
listen 443 ssl;
server_name _;
if ($host !~* ^www\.(.*)$) {
return 301 https://www.$host$request_uri;
}
}
server {
listen 443 ssl;
server_name example.com;
# ...
}
server {
listen 443 ssl;
server_name anotherexample.com;
# ...
}
答案1
你的配置需要看起来像这样:
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /path/to/$ssl_server_name.crt;
ssl_certificate_key /path/to/$ssl_server_name.key;
return 301 https://www.$host$request_uri;
}
您需要拥有名称与您的域名匹配的证书文件。如果您的域名是example.com
,则需要拥有example.com.crt
和example.com.key
。
此外,您需要确保这是default_server
针对端口 443 的唯一阻止。