在做nginx正向代理的过程中,我使用的不是80端口,而且80端口目前已经正在使用。代理服务器和目标服务器都是在同一个机器上,配置以后nginx的代理服务器总是自动的跳到80端口的数据,下面是代理段的nginx配置
server {
listen 81;
server_name localhost;
client_max_body_size 100M;
proxy_next_upstream error timeout invalid_header;
proxy_pass_header server;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
resolver 19.211.55.145;
location / {
proxy_pass http://$http_host$request_uri;
}
}
代理服务器指向的服务端的nginx配置
server {
listen 82;
server_name localhost;
client_max_body_size 100M;
proxy_next_upstream error timeout invalid_header;
proxy_pass_header server;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
location / {
if ( $remote_addr !~* "^10\.211\.55\.145") {
return 403;
}
root /apps/work/data/test/82/;
index index.html index.htm;
}
}
通过配置发现,proxy_pass_header都指向了本机的host,这里修改了一下代理服务器的配置
server {
listen 81;
server_name localhost;
client_max_body_size 100M;
proxy_next_upstream error timeout invalid_header;
proxy_pass_header server;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
resolver 19.211.55.145;
location / {
proxy_pass http://$http_host$request_uri;
}
}
服务端访问代理不在出现跳转,这里的问题就是nginx中使用变量的问题。去掉nginx的跳转,访问没有问题。
注意:如果你遇到在同一台服务器上部署代理,代理跳转错误,那首先要检查一下代理的nginx配置是否有本地的host变量,这种变量最容易跳转到默认端口。

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏