[英]Redirect Old domain to New domain with ssl nginx
我正在尝试将旧的SSL域重定向到新的SSL域。 但这给我发送了重定向循环。
我已经在Nginx虚拟主机中尝试过此配置。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com old-domain.com;
rewrite ^ https://www.example.com$request_uri permanent;
}
server {
#SSL Configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
root /home/username/example/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com old-domain.com;
rewrite ^ https://www.example.com$request_uri permanent;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
请指导如何解决此问题。
在您的问题中,第二个rewrite
语句正在导致重定向循环。 正确的解决方案是将server
块分成两部分,然后从一个重定向到另一个,与从http
重定向到https
方式几乎相同。 为此,您可以使用第一个server
块。
带有default_server
的server
块不需要server_name
指令,因为它始终会响应所有不匹配的服务器名称。 有关详细信息,请参见此文档 。
假设这些服务器是此配置中唯一的https
服务器,并且两个server
块都共享相同的SSL配置(如您的注释所建议),则摘要文件可以移到上方,从而由两个server
块继承 。
最后,主server
块中的server_name
指令仅列出不被重定向的服务器名称。
例如:
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.