nginx proxy_pass к динамическому URL - PullRequest
0 голосов
/ 30 августа 2018

У меня есть несколько внутренних серверов, и я хочу проксировать все серверы, используя один экземпляр сервера nginx. Я не хочу менять nginx.conf всякий раз, когда добавляю новый бэкэнд-сервер.

Например: сервер 1: 192.168.10.1:8080, сервер 2: 192.168.10.2:8080 и т. Д. Nginx работает на example.com . Я хочу получить доступ к Server1 с помощью example.com? Ip = 192.168.10.1 , example.com? Ip = 192.168.10.2 и т. Д.

Я попробовал эту конфигурацию, но она выдаёт страницу 500 ошибок.

location / {
   proxy_pass http://$arg_ip:8080;
   proxy_set_header Host      $host;
   proxy_set_header X-Real-IP $remote_addr;
}

Есть что-то, чего мне не хватает? Есть ли другой способ добиться этого?

1 Ответ

0 голосов
/ 18 сентября 2018
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 $ * 1013 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

вы можете изменить параметр address на ip, в этом случае не забудьте изменить $arg_address на $arg_ip.
ссылка:
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

...