假设场景:
现有两台服务器
服务器1内网IP:192.168.1.123(搭建了XX项目,只允许内网访问)
服务器2外网IP:119.29.23.23
现在要实现访问119.29.23.23:5678/demo/时,反向代理到192.168.1.123:80,nginx的配置为:
server{
listen 5678;
server_name 119.29.23.23:5678;
location /demo/(.*) {
root /home/web;
proxy_pass http://192.168.1.123:80/$1?$args; #url复写到代理,并挂上参数列表
proxy_redirect http://192.168.1.123/ http://119.29.23.23:5678/demo/; #将refresh和location的url重写
}
}
配置解析
proxy_pass解析
实例:
如果访问119.29.23.23:5678/demo/index.php?name=xiaoming&msg=hello
将被定向至192.168.1.123:80/demo/index.php?name=xiaoming&msg=hello
proxy_redirect解析
如果请求有重定向Location:http://192.168.1.123/sayhi.php
,那么回到客户端时会被改成http://119.29.23.23:5678/demo/sayhi.php