配置通过Nginx反向代理访问的Piwik

配置通过Nginx反向代理访问的Piwik,nginx,reverse-proxy,matomo,Nginx,Reverse Proxy,Matomo,我有以下设置 (我的网站运行在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

我有以下设置

  • (我的网站运行在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
而不是所讨论的访问者的真实IP地址


很明显,我在这里做错了什么,但我不确定这可能是什么。我希望这里的人能够提供正确的答案。

您已将Piwik配置为希望为和X_转发主机头提供一个
X_转发_,然后在反向代理中设置失败。尝试:

location ^~ /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;
    proxy_pass https://nn.nn.nn.nn/piwik/;
}

为了其他运行到这个线程的人的利益,我正在复制最终对我有效的配置

    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"
请注意,赋值需要在字符串中加引号