aag Asked: 2022-01-02 01:05:51 +0800 CST2022-01-02 01:05:51 +0800 CST 2022-01-02 01:05:51 +0800 CST 将外部 WAN 地址映射到 Nginx 变量 772 我在 LAN 中有一个 Nginx 网络服务器,它通过 NAT 从 Internet 寻址。该变量$server_addr包含服务器的内部 LAN 地址。有没有办法将网络服务器的外部(互联网公开)IP 地址映射到 Nginx 变量? nginx 0 个回答 Voted Best Answer Tero Kilkanen 2022-01-02T05:16:46+08:002022-01-02T05:16:46+08:00 nginx 默认绑定所有接口,它不关心接口 IP 地址。因此,它适用于任何 IP 地址,无论请求来自 WAN 还是 LAN。 您需要为您的域设置动态 DNS。您的服务器将包含一个将新的外部 IP 更新为动态 DNS 提供程序的守护程序。然后所有客户端将使用动态 DNS 名称连接到服务器。 另一种选择是在局域网中设置一个DNS服务器,将服务器的域名解析为局域网IP地址,然后让局域网客户端使用该DNS服务器。 aag 2022-01-03T05:11:29+08:002022-01-03T05:11:29+08:00 我已经使用 cronjob 解决了更新外部 IP 地址的映射文件的问题: #!/usr/bin/env bash # enumerate authorized networks cat > /etc/nginx/current_ip.conf <<EOF geo \$mysite_geo { default "no"; 127.0.0.1 "yes"; # network which should have access 10.10.0.0/16 "yes"; # network which should have access EOF ((echo " " && (dig +short example.com | grep '^[.0-9]*$')) \ && echo "\"yes\"; } # current dynamic ip") |xargs -d'\n' \ >> /etc/nginx/current_ip.conf
nginx 默认绑定所有接口,它不关心接口 IP 地址。因此,它适用于任何 IP 地址,无论请求来自 WAN 还是 LAN。
您需要为您的域设置动态 DNS。您的服务器将包含一个将新的外部 IP 更新为动态 DNS 提供程序的守护程序。然后所有客户端将使用动态 DNS 名称连接到服务器。
另一种选择是在局域网中设置一个DNS服务器,将服务器的域名解析为局域网IP地址,然后让局域网客户端使用该DNS服务器。
我已经使用 cronjob 解决了更新外部 IP 地址的映射文件的问题: