Nginx规则仅重定向特定的https链接



我已经将nginx配置为反向代理工具。我遇到了一个我无法处理的问题。以下是我在 .conf 文件中设置的规则。

server {
listen       80;
server_name rp.mydomain.com;
return 301 https://$host/myapp1/;
location / {
proxy_pass <local ip address>;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http://$host https://$host;
proxy_set_header Host $host;
}
}
server {
listen       443 ssl;
server_name  rp.mydomain.com;
location / {
proxy_pass <local ip address>;
proxy_redirect http:// https://;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_ssl_session_reuse on;
}
}

我的应用程序驻留在/myapp1/上。我没有在 [我尝试] proxy_pass中编写/myapp1/的原因是当我尝试登录页面时重定向无法正常工作。我找不到错误页面。

但是在侦听 80 块中的此规则之后,返回 301https://$host/myapp1/;它的工作方式就像魅力一样,但前提是我打开 http 页面。

当我打开链接时,rp.mydomain.com.重定向工作正常,应用程序也运行良好。http 请求被重定向到 https,我可以通过我的应用程序登录。

但是,当我通过https://rp.mydomain.com时,由于listen 443中的proxy_pass规则,我最终进入了<local ip address>的空白页。

我的要求是每当生成页面的特定请求时,即https://rp.mydomain.com,它重定向到https://rp.mydomain.com/myapp1/(就像当用户通过http://rp.mydomain.com访问页面时一样),但其他请求,如https://rp.mydomain.com/myapp1/https://rp.mydomain.com/myapp1/profile[等]不受影响。

只有一个特定的页面https://rp.mydomain.com会自动重定向。

可以这样做吗?请在这个问题上帮助我。

谢谢。

尝试:

server {
listen       80;
server_name rp.mydomain.com;
return 301 https://$host$request_uri;
}
server {
listen       443 ssl;
server_name  rp.mydomain.com;
location = / {
rewrite ^ /myapp1/ last;
}
location / {
proxy_pass <local ip address>;
proxy_redirect http:// https://;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_ssl_session_reuse on;
}
}

添加了location = /块以创建从//myapp1/的映射。要在浏览器中更改 URL,请使用permanent而不是last。有关详细信息,请参阅此文档。

您将需要添加其他proxy_redirect语句,以防止在应用程序执行重定向时泄漏本地IP 地址。有关详细信息,请参阅此文档。

假定您的 SSL 证书在外部块中定义并继承。

最新更新