Redirect 在nginx中将www和http请求重定向到https://,捕获所有域
在nginx中,我们希望将所有发送的请求重定向到:Redirect 在nginx中将www和http请求重定向到https://,捕获所有域,redirect,nginx,configuration,no-www,Redirect,Nginx,Configuration,No Www,在nginx中,我们希望将所有发送的请求重定向到: https://www.<domain> http://www.<domain> http://<domain> …但是第一个服务器块(www-catch)似乎匹配所有请求,而不仅仅是www.* 不要失去“其他一切”: server { listen 80 default_server; server_name _; return 301 http://ex
https://www.<domain>
http://www.<domain>
http://<domain>
…但是第一个服务器块(www-catch)似乎匹配所有请求,而不仅仅是www.*
不要失去“其他一切”:
server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}
更高效的是,只需在http协议上运行重写,就可以避免在每个请求()上检查$scheme变量
也许您可以在一个地方尝试使用80/443:
server {
listen 80;
listen [::]:80;
listen 443 default ssl;
server_name www.example.com;
ssl_certificate /path/to/my/cert;
ssl_certificate_key /path/to/my/key;
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
谢谢,瓦莱里。您知道如何将此应用于捕获所有域吗?空服务器实际上是捕获所有域server@ValeriySolovyov为什么在最后一段代码中出现
如果的情况?@Mohammad AbuShady如果不是https->redirect$ssl_协议-返回已建立ssl连接的协议;嗯,我会尽量避免如果
s,我认为第一个解决方案更好,3个服务器块和nginx将匹配正确的一个。
server {
listen 80;
listen [::]:80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 default_server ssl;
server_name www.example.com example.org;
ssl_certificate /path/to/my/cert;
ssl_certificate_key /path/to/my/key;
}
server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}
server {
listen 80;
listen [::]:80;
listen 443 default ssl;
server_name www.example.com;
ssl_certificate /path/to/my/cert;
ssl_certificate_key /path/to/my/key;
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
}