带重写的 nginx 反向代理后面的 Piwik 配置
Configuration for Piwik behind nginx reverse proxy with rewrite
我在 Nginx 反向代理后面使用 Piwik,而 Piwik 运行 在 Apache 服务器上。我还使用重写规则( /piwik/ 到 / )。
对于 Chrome 和 Mac 上的 Safari,Piwik 的登录过程无法正常工作(我只收到配置浏览器 cookie 和代理服务器的一般错误消息)。
但是我当前的配置在 Mac:
的 FirefoxDeveloperEdition 中有效
nginx.conf:
location /piwik {
rewrite ^/piwik/(.*)$ / break;
proxy_pass http://piwik;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host/piwik;
}
config.ini.php
[General]
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
当我删除 nginx.conf 中的 /piwik
时:
proxy_set_header X-Forwarded-Host $http_host;
登录正常,但我遇到了另外 2 个问题:
- 登录后,我错误地重定向到根目录
/
(不再是 Piwik),但在重新打开 Piwik 后,我已登录
- 徽标丢失是因为 url
http://localhost:2020/plugins/Morpheus/images/logo.svg
而不是 http://localhost:2020/piwik/plugins/Morpheus/images/logo.svg
我也会保留重写规则,因为 Apache 服务器是一个通用 docker 容器。
可能要分析认证失败的情况,但我还没有找到正确的行。
我创建了一个拉取请求来启用和考虑代理环境的新 header 信息。
nginx.conf(告知缺少路径)
rewrite ^/piwik/(.*)$ / break;
...
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri /piwik;
在 config.ini.php
中启用 header
proxy_uri_header = 1
此选项将缺少的路径插入到当前脚本名称并重定向。有关详细信息,请参阅拉取请求 https://github.com/piwik/piwik/pull/12011
我在 Nginx 反向代理后面使用 Piwik,而 Piwik 运行 在 Apache 服务器上。我还使用重写规则( /piwik/ 到 / )。
对于 Chrome 和 Mac 上的 Safari,Piwik 的登录过程无法正常工作(我只收到配置浏览器 cookie 和代理服务器的一般错误消息)。
但是我当前的配置在 Mac:
的 FirefoxDeveloperEdition 中有效nginx.conf:
location /piwik {
rewrite ^/piwik/(.*)$ / break;
proxy_pass http://piwik;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host/piwik;
}
config.ini.php
[General]
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
当我删除 nginx.conf 中的 /piwik
时:
proxy_set_header X-Forwarded-Host $http_host;
登录正常,但我遇到了另外 2 个问题:
- 登录后,我错误地重定向到根目录
/
(不再是 Piwik),但在重新打开 Piwik 后,我已登录 - 徽标丢失是因为 url
http://localhost:2020/plugins/Morpheus/images/logo.svg
而不是http://localhost:2020/piwik/plugins/Morpheus/images/logo.svg
我也会保留重写规则,因为 Apache 服务器是一个通用 docker 容器。
可能要分析认证失败的情况,但我还没有找到正确的行。
我创建了一个拉取请求来启用和考虑代理环境的新 header 信息。
nginx.conf(告知缺少路径)
rewrite ^/piwik/(.*)$ / break;
...
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri /piwik;
在 config.ini.php
中启用 headerproxy_uri_header = 1
此选项将缺少的路径插入到当前脚本名称并重定向。有关详细信息,请参阅拉取请求 https://github.com/piwik/piwik/pull/12011