我有多个后端服务器,我想使用一个nginx服务器实例代理所有服务器。每当添加新的后端服务器时,我都不想更改nginx.conf。
例如:服务器1:192.168.10.1:8080,服务器2:192.168.10.2:8080等 Nginx在example.com上运行。我想使用example.com?ip=192.168.10.1,example.com?ip=192.168.10.2等访问Server1
我尝试了这种配置,但是它给出了500错误页面。
location / {
proxy_pass http://$arg_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
我缺少什么吗?还有其他方法可以实现这一目标吗?
答案 0 :(得分:0)
server {
server_name dynamic_host;
listern 8080;
#resolver 8.8.8.8;
#seems you don't need resolver because you use ip address
location / {
if ( $arg_address != "" ) {
proxy_pass $arg_address;
#proxy_pass $arg_address$uri
#proxy_pass $arg_address$request_uri
}
}
}
三个proxy_pass之间的区别
$ proxy_address
example.com?address=http://192.168.10.2:8080/
转到
http://192.168.10.2:8080/
$ proxy_address $ uri
example.com/test/path?address=http://192.168.10.2:8080/
转到
http://192.168.10.2:8080/test/path
$ proxy_address $ request_uri
example.com/test/path?address=http://192.168.10.2:8080/¶m=value
转到
http://192.168.10.2:8080/test/path?address=http://192.168.10.2:8080/¶m=value
您可以将参数address
更改为ip
,在这种情况下,请不要忘记将$arg_address
更改为$arg_ip
。
参考:
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables