2015-10-12 2 views
0

Из-за некоторых странных требований к проекту я пытаюсь настроить Ngnix как обратный прокси-сервер, который использует то же имя хоста, которое указано во входящем запросе, в качестве сервера шлюза восходящего потока. Причина, по которой это должно сработать, заключается в том, что общедоступный интернет-DNS будет указывать на наш сервер Ngnix для данного имени хоста, но локальный разрешенный сервер Ngnix-сервера разрешит одно и то же имя хоста на машине в локальной сети.Настроить Ngnix как обратный прокси без изменения имени хоста

Вот что я пробовал:

worker_processes 1; 

events { 
    worker_connections 1024; 
} 


http { 
    include   mime.types; 
    default_type  application/octet-stream; 
    sendfile   on; 
    keepalive_timeout 65; 

    server { 
     listen  80; 

     location/{ 
      resolver 127.0.0.1; 
      proxy_pass http://$host; 
     } 
    } 
} 

Я вижу следующее в журнале ошибок при попытке сделать запрос:

* 1028 example.test.com не мог (3: Хост не найден), клиент: XXX.XXX.XXX.XXX, сервер:, запрос: «GET/HTTP/1.1», хост: «example.test.com», referrer: «http://foo.com/bar.htm»

Когда я пишу одно и то же имя хоста на машине Ngnix, он разрешен правильно и доступен.

Что мне здесь не хватает?

+0

может быть, это поможет вам: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver – matanco

ответ

-1

вы можете сделать это следующим образом:

worker_processes 1; 

events { 
    worker_connections 1024; 
} 
http { 
    include   mime.types; 
    default_type  application/octet-stream; 
    sendfile   on; 
    keepalive_timeout 65; 

    server { 
     listen 80; 
     server_name example.test.com; 

     location/{ 
      proxy_pass http://192.168.x.x; 
     } 
    } 

    server { 
     listen  80; 

     location/{ 
      proxy_set_header Host $host; 
      proxy_pass http://127.0.0.1; 
     } 
    } 
} 

EDIT
К сожалению, я не знаю, что вам нужна динамические конфигурации. Но мне также нужна конфигурация в PROXY SERVER, я думаю.

+0

он хочет динамический не статический. – matanco

3

Мы выяснили, что проблема связана с нашим DNS-резольвером, не поддерживающим ipv6. Мы отключили ipv6 в файле конфигурации Ngnix, и он сработал. Просто нужно было добавить «ipv6 = off» после адреса преобразователя dns.

Итоговый конфигурационный файл:

worker_processes 1; 

events { 
    worker_connections 1024; 
} 


http { 
    include   mime.types; 
    default_type  application/octet-stream; 
    sendfile   on; 
    keepalive_timeout 65; 

    server { 
     listen  80; 

     location/{ 
      resolver 127.0.0.1 ipv6=off; 
      proxy_pass http://$host; 
     } 
    } 
} 
+0

Добавление ipv6 = off после того, как resolver не работал для меня. Что еще может быть причиной? –

Смежные вопросы