2015-12-27 144 views
1

我有以下設置配置Piwik通過Nginx上反向代理訪問

  • 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地址。

很明顯,我在這裏做錯了事,但我不確定它可能是什麼。我希望這裏的某個人能夠提供正確的答案。

回答

0

您已將Piwik配置爲期望X_FORWARDED_FORX_FORWARDED_HOST標頭,然後無法在反向代理中設置它們。嘗試:

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/; 
} 
+0

是的,我注意到了,並在我發佈問題後進行了更改。仍然沒有喜悅... – DroidOS

0

對於其他運行到這個線程我再生,最終與Piwik側config.ini.php包含工作對我來說

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; 
    } 

配置的好處

[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" 

請注意,分配需要使用帶引號的字符串。