Nginx return 位置下
Nginx return under location
我目前在使用 nginx 重定向到另一台主机时遇到了一个小问题。例如,我想重定向 https://service.company.com/new/test.html to https://new-service.company.com/test.html .
现在我有以下配置,它将我重定向到 https://new-service.company.com/new/test.html .
server {
# SSL
ssl_certificate /etc/nginx/cert/chained_star_company.com.crt;
ssl_certificate_key /etc/nginx/cert/star_company.com.key;
listen 443;
server_name service.company.com;
location /new/ {
return 301 $scheme://service-new.company.com/;
}
}
我也尝试了同样的结果:
return 301 $scheme://service-new.company.com/$request_uri
您想重写 URI 和重定向。您可以使用 location
和 return
指令来实现它,但是 rewrite
指令将是最简单的方法:
rewrite ^/new(.*)$ https://new-service.company.com permanent;
有关更多信息,请参阅 this document。
顺便说一句,您的 location
块解决方案的问题是正则表达式捕获,不是。使用:
location ~ ^/new(.*)$ {
return 301 https://new-service.company.com$is_args$args;
}
有关更多信息,请参阅 this document。
我目前在使用 nginx 重定向到另一台主机时遇到了一个小问题。例如,我想重定向 https://service.company.com/new/test.html to https://new-service.company.com/test.html .
现在我有以下配置,它将我重定向到 https://new-service.company.com/new/test.html .
server {
# SSL
ssl_certificate /etc/nginx/cert/chained_star_company.com.crt;
ssl_certificate_key /etc/nginx/cert/star_company.com.key;
listen 443;
server_name service.company.com;
location /new/ {
return 301 $scheme://service-new.company.com/;
}
}
我也尝试了同样的结果:
return 301 $scheme://service-new.company.com/$request_uri
您想重写 URI 和重定向。您可以使用 location
和 return
指令来实现它,但是 rewrite
指令将是最简单的方法:
rewrite ^/new(.*)$ https://new-service.company.com permanent;
有关更多信息,请参阅 this document。
顺便说一句,您的 location
块解决方案的问题是正则表达式捕获,不是。使用:
location ~ ^/new(.*)$ {
return 301 https://new-service.company.com$is_args$args;
}
有关更多信息,请参阅 this document。