【发布时间】:2017-03-13 16:43:08
【问题描述】:
我已将 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 块的这条规则之后,返回 301 https://$host/myapp1/; 它的工作就像魅力一样,但前提是我打开 http 页面。
当我打开链接时,rp.mydomain.com。重定向运行良好,应用程序也运行良好。 http请求被重定向到https,我可以通过我的应用程序登录。
但是,当我浏览https://rp.mydomain.com 时,我最终会进入<local ip address> 的空白页,因为listen 443 中的proxy_pass 规则。
我的要求是每当生成页面的特定请求时,即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 会自动重定向。
有可能吗?请帮助我解决这个问题。
谢谢。
【问题讨论】:
标签: nginx url-redirection reverse-proxy