文章目录
- 根据域名代理
- 根据端口代理
- 根据路径path代理
- 总结
根据域名代理
server {
listen 1111;
server_name ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
根据端口代理
server {
listen 16010;
server_name localhost;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://192.7.0.36:16010;
}
}
根据路径path代理
注意: location后的path带不带/没有区别,proxy_pass后的路径带不带‘/’ 区别很大。
- target服务路径需要context-path(location: /docs)时
location /docs{
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
http://localhost:1111/docs
代理访问后端服务:http://localhost:8080/docs
- target服务路径不需要context-path(location:/tomcat)时
location /tomcat {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
http://localhost:1111/tomcat/docs
代理访问后端服务:http://localhost:8080/docs
总结
- 根据域名和端口代理比较简单,不用考虑path的各种情况,优先选择根据域名或端口反向代理。
- 在调用api服务,返回数据时,以上三种代理方式没有差异; 访问页面时,使用path匹配反向代理时,会有一些不同,一个是页面内容中的url跳转链接需要单独处理,一个是服务端重定向处理,比如浏览器直接访问:http://server:port/path时,服务端会让浏览器直接重定向到http://server:port/path/,加上反向代理的规则后,可能不是你想要的结果