php - 如果我们的应用程序位于反向代理后面,如何获取访问者的真实 IP?
问题描述
我正在使用 Siteground 的基于 nginx 的动态缓存反向代理,它使用它为请求和静态文件提供服务,我想获取访问者的 IP 地址,但我无法得到任何东西,甚至什么都没有显示print_r($_SERVER)
。
这是我尝试过的。
$hostname = gethostbyaddr(trim($_SERVER['HTTP_X_REAL_IP']));
$hostname = gethostbyaddr(trim($_SERVER['REMOTE_ADDR']));
如果有人可以帮忙?
解决方案
您必须在反向代理上设置配置才能将真实 IP 地址转发到您的 Web 服务器。
例如使用 Nginx,你可以像这样设置标题:
proxy_set_header X-Forwarded-Proto $scheme;
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;
在这里,X-Real-IP
将为您提供后端服务器上的真实 IP 地址。
您必须参考您正在使用的反向代理软件(apache、nginx 等)的文档以获取更多信息。
推荐阅读
- php - Wordpress,html表单仅在缺少字段时运行php,如果所有字段均已填写则给出404?
- ag-grid - Accessing state with Ag-grid
- scheme - 使用 Scheme 计算后缀表达式的程序
- r - 将不同数据框中的相同列名相乘
- python - 无法在内存缓冲区中捕获行为日志事件以供以后显示或查询
- java - 使用端口号的 SQL Server 2014 的 JDBC 连接字符串
- python - 编辑 QTableView 时捕获 ESC 键
- haskell - 无法推断(显示 a10)因使用“def”而引起
- postman - 如何从邮递员的响应正文中提取值
- c# - 从命令行进程获取所需输出的问题