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

标签 nginx reverse-proxy matomo

我有以下设置

  • 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/

相关文章:

tomcat - modsecurity 有用于 nginx 或 Tomcat 的模块吗?

django - 如何使用带有 gunicorn Django 的子文件夹域配置 nginx 代理传递

ssl - SSL 反向代理站点上的 Liferay Web 表单重新验证问题

node.js - 在 Node.js 中,当应用程序位于反向代理后面时查找原始客户端 URL

javascript - 尝试使用 onclick 来跟踪 Piwik 目标

javascript - 使用了 _paq.push() 但在加载 matomo.js 文件之前没有初始化 Matomo 跟踪器

php - nginx:auth_basic 和 php

laravel - Stream_socket_sendto() : Connection refused. Laravel 5.7 转储服务器

apache - 重定向到域的不同 Apache 服务器,但保持 URL 不变

apache - 通过 apache 服务器内的服务器端过滤动态包含 piwik 代码