我有多个后端服务器,我想使用单个nginx服务器实例代理所有服务器。每当我添加新的后端服务器时,我都不想更改nginx.conf。
例如:服务器1:192.168.10.1:8080,Server2: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;
}
有什么我想念的吗?有没有其他方法来实现这一目标?
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之间的区别
example.com?address=http://192.168.10.2:8080/
去了http://192.168.10.2:8080/
example.com/test/path?address=http://192.168.10.2:8080/
去了
http://192.168.10.2:8080/test/path
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
你可以将param address
更改为ip
,在这种情况下,不要忘记将$arg_address
更改为$arg_ip
。
参考:
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables