我的上游出现了问题。当我传递 时,我得到的 URL 出现http://backend/f?p=4550
404 错误https://secure.toto02.com/ords/pls/manitou/4550
。我试图做的是,https://secure.toto 02.com/ords/pls/manitou/4550
在上游将请求发送到 时,将其保留在导航器中http://192.167.1.79:8080/ords/f?p=4550
。我想隐藏请求。
我不知道 nginx 服务器配置文件出了什么问题。有人可以帮忙吗?
upstream backend {
server 192.167.1.79:8080;
}
server {
listen 443 ssl spdy;
server_name secure.toto02.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location ~ "^/(.*)/pls/ords/(\d{1,4})$" {
proxy_pass http://backend/ords/f?p=$2;
}
}
答案1
您在指令中使用了变量proxy_pass
,这使得上游服务器重定向直接转发到客户端,因为 nginx 无法猜测该做什么。这就是您在浏览器中看到此结果的原因。
确保您的上游服务器正确回答http://192.167.1.79:8080/ords/f?p=4550
使用与 nginx 所执行完全相同的上下文。
例如这里至少有两件事出了问题:
Host
您忘记用您的真实域名替换标头,因此 nginx 正在使用Host: backend
它。- 您的上游服务器正在重定向
/ords/f?p=4550
至(根据您的评论)/ords/f?p=4550:1:
。