我有一个运行 Ubuntu 22.04 并使用 nginx 作为 Web 服务器的 KVM VPS。我有一个 IPv6 /64 块,因此我在控制面板中添加了额外的 IP。我还已在 DNS 服务器上添加了 AAAA 记录。我想为每个域分配不同的 IP,因此我上传了一个 php 文件来找出我的服务器向公众显示的 ipv6,但它显示的是错误的 ip 地址,它使用的是上次创建的 ipv6。这是我的 nginx 配置:
server {
listen [79de:d3e4:211c:3963:e2d5:4b9d:00b8:2c60]:80;
server_name sub.domain.com www.sub.domain.com;
access_log /var/log/nginx/sub.domain.com.access.log rt_cache;
error_log /var/log/nginx/sub.domain.com.error.log;
root /var/www/sub.domain.com/htdocs;
index index.php index.html index.htm;
include common/php81.conf;
include common/locations-wo.conf;
include /var/www/sub.domain.com/conf/nginx/*.conf;
}
PHP的:
<?php
// create a new cURL resource
$ch = curl_init ();
// set URL and other appropriate options
curl_setopt ($ch, CURLOPT_URL, "http://ipecho.net/plain");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL and pass it to the browser
$ip = curl_exec ($ch);
echo "The public ip for this server is: $ip";
// close cURL resource, and free up system resources
curl_close ($ch);
?>
如何使每个 IP 独立,以便 IP 1 传出 IP 显示为 IP 1,IP 2 显示为 IP 2,IP 3 显示为 IP 3 等等...
答案1
您的 PHP 脚本不确定传入的 IP 地址,而是确定传出连接的 IP 地址。
未经测试,但你应该能够转发变量$server_addr
通过 php_fpmfastcgi_param
指示。
Nginx的:
fastcgi_param SERVER_ADDR $server_addr
PHP的:
echo $_SERVER['SERVER_ADDR '];
应该做的是使用add_header
指令并检查客户端上的响应标头。
add_header X-Server-Addr $server_addr
这里不需要服务器端脚本。