0%

nginx配置反向代理后,接入nginx的应用无法获取正确的访问路径和端口问题

简介

在实际项目中需要用到ngnix做反向代理,但是做完反向代理后发现子应用无法获取正确的url和端口。比如访问nginx的url为 192.168.1.1/test ,那么现在将/test反向代理到 192.168.1.2:8080/test 这个url下,那么我在 192.168.1.2:8080/test 下就获取端口一直会是80,获取的url不会是访问nginx时的192.168.1.1/test ,这里我们需要对ngnix的配置文件的请求头进行修改加入proxy_set_header HOST $host;属性如下$host代表你访问nginx的访问路径,在路径后加入应用的端口,那么在子应用中就能获取到正确的端口了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

upstream gateway {
server 192.168.171.42:30000;
# server 192.168.171.43:30000;
# server 192.168.171.45:30000;
}



server {
listen 8080;
server_name location;

location /cas {
proxy_pass http://192.168.171.44:8089/cas;
proxy_set_header HOST $host:8089;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location / {
proxy_pass http://gateway;
proxy_set_header HOST $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}