Назад | Перейти на главную страницу

Nginx - обслуживает цель передачи прокси как IP вместо внутреннего DNS

Я часто использую Nginx в качестве обратного прокси для всех моих внутренних размещенных приложений.
В большинстве случаев эти приложения вызываются с IP-адресом, и все работает хорошо.

На этот раз я хочу использовать прокси для WordPress, размещенного на внутреннем сервере Apache2.
Поэтому я хочу использовать внутренний DNS в качестве VirtualHost в Apache.

Проблема в том, что Nginx всегда использует IP вместо внутреннего DNS для вызова Wordpress.
Поэтому я не нацелен на правильный VirtualHost на Apache.

Как я могу заставить Nginx использовать DNS вместо переписать его как IP?

Конфигурация nginx vhost

server{
  server_name http://my-external-dns.com;
  location / {
    proxy_pass http://my-internal-dns.lan/;
    proxy_set_header X-Forwarded-Host $host;
    proxy_read_timeout    10;

    proxy_connect_timeout 10;
    proxy_set_header      X-Real-IP $remote_addr;
    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header      X-Forwarded-Proto https;
    proxy_set_header      Host $host;
  }
}

Конкретная конфигурация прокси на nginx

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;

Nginx access.log

[01/Jun/2020:10:14:26 +0200] 109.190.219.189 (-) "my-external-dns.com" "GET / HTTP/1.1" 200 2 => 192.168.10.10:80

Вы можете видеть, что он использует IP 192.168.10.10, который является IP-адресом хоста my-internal-dns.lan.

Так должно быть

[01/Jun/2020:10:14:26 +0200] 109.190.219.189 (-) "my-external-dns.com" "GET / HTTP/1.1" 200 2 => my-internal-dns:80

На стороне Apache у меня есть этот конфиг.

Я думаю, проблема не в этом, а в конфигурации Nginx

# My Specific Host
<VirtualHost *:80>
        ServerName my-internal-dns.lan
        DocumentRoot /var/www/prod/mydir/
        <Directory /var/www/prod/mydir>
                Options All
                AllowOverride All
        </Directory>
</VirtualHost>
# My Default Host
<VirtualHost *:80>
        DocumentRoot /var/www/

        <Directory /var/www>
                AllowOverride All
                Options All
        </Directory>

</VirtualHost>

Как было сказано ранее, Nginx переходит на хост по умолчанию, а не на конкретный.

С уважением