我有以下设置
- https://example.net (我的网站在 Nginx 上运行)
- nn.nn.nn.nn(我的 Piwik 服务器只能通过其 IP 地址访问)
在我的网页上,我有常用的 Piwik 代码段
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://example.net/piwik/";
...
Nginx 配置为
location ^~ /piwik/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://nn.nn.nn.nn/piwik/;
}
根据 Piwik 文档,我认为我还需要对我的 config.ini.php
文件进行一些更改
[General]
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
trusted_hosts[] = nn.nn.nn.nn
trusted_hosts[] = example.net
通过此设置,我可以登录 Piwik 并通过 URL https://example.net/piwik
对其进行管理。当我浏览网站上的页面时,我看到 Piwik 中出现了预期的事件。然而,记录的 IP 地址顽固地固定在 nn.nn.nn.nn
,而不是相关访问者的真实 IP 地址。
显然,我在这里做错了什么,但我不确定它可能是什么。我希望这里有人能够提供正确的答案。
最佳答案
为了其他人进入这个线程的利益,我正在复制最终对我有用的配置
location ^~ /piwik/ {
proxy_pass https://nn.nn.nn.nn/piwik/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
}
Piwik 端 config.ini.php
包含
[General]
proxy_client_headers[] = "HTTP_X_FORWARDED_FOR"
proxy_client_headers[] = "X-Real-IP"
proxy_host_headers[] = "HTTP_X_FORWARDED_HOST"
proxy_ips[] = "nn.nn.nn.nn"
请注意,赋值需要用引号引起来。
关于nginx - 配置通过 Nginx 反向代理访问的 Piwik,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478471/