说明:
需求:我当前只有一个端口的授权,比如80,但是我的服务有多个且在不同的端口,比如8081,8082,我希望所有的请求通过都通过80端口进来,然后根据不同的文根怼到不同的端口(或者说是服务)上去
应用带根路径的情况
- 应用1请求为:http://localhost:8091/app
- 应用2请求为:http://localhost:8092/app
配置如下时:
通过8000端口做服务端的反向代理
当访问:http://localhost:8000/app1 相当于请求 http://localhost:8091/app
当访问:http://localhost:8000/app2 相当于请求 http://localhost:8092/app
将根路径直接去掉,此时为 /
即:
- 应用1请求为:http://localhost:8091/
- 应用2请求为:http://localhost:8092/
【注意采坑】:最后的 /
不能少,否则会出现404
当访问:http://localhost:8000/app1 相当于请求 http://localhost:8091/
当访问:http://localhost:8000/app2 相当于请求 http://localhost:8092/
server {
listen 8000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 为第一个应用配置路径
location /app1 {
proxy_pass http://localhost:8091/; # 转发到本机的8091端口
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 X-Forwarded-Proto $scheme;
}
# 为第二个应用配置路径
location /app2 {
proxy_pass http://localhost:8092/; # 转发到本机的8092端口
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 X-Forwarded-Proto $scheme;
}
}