Nginx vhost 配置

Nginx vhost 配置

我经常使用Nginx作为所有内部托管应用程序的反向代理。
大多数情况下,这些应用程序都是通过基于 IP 的地址调用的,并且一切运行良好。

这次,我想代理托管在内部 Apache2 服务器上的 wordpress。
因此,我想使用内部 DNS 作为虚拟主机在 Apache 中。

问题是 Nginx 总是使用 IP 而不是内部 DNS 来调用 Wordpress。
所以我没有在 Apache 上定位正确的 VirtualHost。

我怎么能够强制 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访问日志

[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,这是 my-internal-dns.lan 主机的 IP。

它应该是

[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 跳转到默认主机,而不是特定主机。

问候

相关内容