Nginx配置实例
server{
listen 80;
#server_name localhost;
location / {
root /data/run/aqscweb/tyxx/;
index index.html /tyxx/index.html;
}
location /api/ {
proxy_pass http://172.19.101.29:30000/;
proxy_set_header Host $http_host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /plug/video/ {
proxy_pass http://172.19.101.36:7080/;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /portal {
proxy_pass http://172.19.101.31:8080;
proxy_set_header Host $proxy_host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
nginx中
h
o
s
t
、
host、
host、http_host、$proxy_host的区别
变量 | 是否显示端口 | 值 |
---|
$host | 不显示端口 | 浏览器请求的ip,不显示端口 |
$http_host | 端口存在则显示 | 浏览器请求的ip和端口号 |
$proxy_host | 默认80端口不显示,其它显示 | 被代理服务的ip和端口号 |
配置 nginx 代理服务后
- 不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值。
- 设置 proxy_set_header Host $host 时,浏览器直接访问 nginx,获取到的 Host 是 $host 的值,没有端口信息。
- 设置 proxy_set_header Host
h
o
s
t
:
host:
host:proxy_port 时,浏览器直接访问 nginx,获取到的 Host 是
h
o
s
t
:
host:
host:proxy_port 的值。
- 设置 proxy_set_header Host $http_host 时,浏览器直接访问 nginx,获取到的 Host 包含浏览器请求的 IP 和端口。
- 设置 proxy_set_header Host $host 时,浏览器直接访问 nginx,获取到的 Host 是 $host 的值,没有端口信息。此时代码中如果有重定向路由,那么重定向时就会丢失端口信息,导致 404。