Php 如何阻止客户端IP地址在Cloudflare/Docker/NGINX/LAMP站点中丢失?
问题是在我下面的站点结构中没有设置PHP字段Php 如何阻止客户端IP地址在Cloudflare/Docker/NGINX/LAMP站点中丢失?,php,nginx,docker,cloudflare,Php,Nginx,Docker,Cloudflare,问题是在我下面的站点结构中没有设置PHP字段$\u SERVER['HTTP\u CLIENT\u IP'],我应该如何更正 Docker网桥网络(位于cloudflare后面的主机上)上名为“back”的静态IP容器: NGINX在容器中运行(172.24.02) 容器中的Apache+PHP(172.24.0.3) nginx.conf: location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_heade
$\u SERVER['HTTP\u CLIENT\u IP']
,我应该如何更正
Docker网桥网络(位于cloudflare后面的主机上)上名为“back”的静态IP容器:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://172.24.0.3;
}
test.php
<?php
echo('HTTP_CLIENT_IP: '.$_SERVER['HTTP_CLIENT_IP']);
echo('<br>HTTP_X_FORWARDED_FOR'.$_SERVER['HTTP_X_FORWARDED_FOR']);
echo('<br>REMOTE_ADDR'.$_SERVER['REMOTE_ADDR']);
echo('<br>HTTP_X_FORWARDED'.$_SERVER['HTTP_X_FORWARDED']);
echo('<br>HTTP_FORWARDED'.$_SERVER['HTTP_FORWARDED']);
echo('<br>HTTP_FORWARDED_FOR'.$_SERVER['HTTP_FORWARDED_FOR']);
?>
感谢@Devon提出打印$\u服务器变量的建议,以下字段中包含客户端IP:
$_SERVER['HTTP_CF_CONNECTING_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']
第一个给了
客户机IP
,第二个给了客户机IP,cloudflare IP
,感谢@Devon建议打印出$\u服务器变量,结果发现以下字段中有客户机IP:
$_SERVER['HTTP_CF_CONNECTING_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']
第一个给了
客户端IP
,第二个给了客户端IP,cloudflare IP
您如何配置Nginx和Apache一起工作?HTTP\u客户端IP不是标准的头,REMOTE\u ADDR是IP的标准,但在代理情况下,您需要设置头。为什么不打印出所有的头文件print\r($\u SERVER)
,而不是尝试打印那些不一定与定义的头文件对齐的头文件。@Devon Apache在一个容器中的端口80上运行,nginx只需使用上述配置将请求转发给它即可传递头文件。我将尝试您的建议,重新打印整个变量Nginx和Apache如何配置为协同工作?HTTP_CLIENT_IP不是标准头,REMOTE_ADDR是IP的标准头,但在代理情况下,您需要设置头。为什么不打印出所有的头文件print\r($\u SERVER)
,而不是尝试打印那些不一定与定义的头文件对齐的头文件。@Devon Apache在一个容器中的端口80上运行,nginx只需使用上述配置将请求转发给它即可传递头文件。我将尝试你的建议,重新打印整个变量