最近遇到个需求,后端使用第三方工具给前端任务生成可视化页面,每个任务的页面地址端口不同。因为服务要放在公网上,不想也不好动态开那么多端口(主要是嫌麻烦),就尝试用nginx配置,捣鼓了一下还真能行,记录下来:
1、约定url访问时候带port参数,给nginx用来访问后端真实的端口,携带方式:
http://xxxx.com/(.*)port=xxx
2、具体配置:
location ~^/(.*) {
if ($request_uri !~ ".*port=.*"){
proxy_pass http://后端服务地址:$cookie_port;
}
if ($request_uri ~ ".*port=.*"){
proxy_pass http://后端服务地址:$arg_port;
add_header Set-Cookie 'port=$arg_port';
}
按ip转发:
location ~^/(.*) {
if ($request_uri !~ ".*server_ip=.*"){
proxy_pass http://$cookie_server_ip:8091;
}
if ($request_uri ~ ".*server_ip=.*"){
proxy_pass http://$arg_server_ip:8091;
add_header Set-Cookie 'server_ip=$arg_server_ip';
}