nginx proxy_pass到动态网址

问题描述 投票:0回答:1

我有多个后端服务器,我想使用单个nginx服务器实例代理所有服务器。每当我添加新的后端服务器时,我都不想更改nginx.conf。

例如:服务器1:192.168.10.1:8080,Server2:192.168.10.2:8080等Nginx正在example.com上运行。我想通过使用example.com?ip=192.168.10.1example.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;
}

有什么我想念的吗?有没有其他方法来实现这一目标?

nginx reverse-proxy proxypass
1个回答
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之间的区别

  1. $ proxy_address example.com?address=http://192.168.10.2:8080/去了http://192.168.10.2:8080/
  2. $ proxy_address $ URI example.com/test/path?address=http://192.168.10.2:8080/去了 http://192.168.10.2:8080/test/path
  3. $ proxy_address $ REQUEST_URI example.com/test/path?address=http://192.168.10.2:8080/&param=value去了 http://192.168.10.2:8080/test/path?address=http://192.168.10.2:8080/&param=value

你可以将param address更改为ip,在这种情况下,不要忘记将$arg_address更改为$arg_ip。 参考: http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

© www.soinside.com 2019 - 2024. All rights reserved.