
我在我的伺服器上運行了 nginx,並且最近使用以下配置安裝了 Piwik:
server {
listen 443 ssl spdy;
server_name analytics.example.org;
root /srv/www/analytics.example.org;
index index.php;
ssl_certificate ssl-certificates/wildcard.example.org.crt;
ssl_certificate_key ssl-certificates/wildcard.example.org.key;
access_log /var/log/nginx/analytics.example.org_access.log;
error_log /var/log/nginx/analytics.example.org_error.log;
auth_basic "HTTP Basic Authentication";
auth_basic_user_file htpasswd/example;
satisfy any;
include example_ip;
deny all;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires max;
}
location = /robots.txt {
return 200 "User-agent: *\nDisallow: /\n";
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
try_files $uri $uri/index.php =404;
include fastcgi.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location = /piwik.js {
satisfy any;
allow all;
auth_basic off;
try_files $uri =404;
}
}
我正在嘗試關閉 /piwik.js 的基本身份驗證,因為它是從應用程式本身請求的,並且總是要求輸入用戶名和密碼。
我在這裡做錯了什麼?
--- 更新 1 ---
更新的配置:
...
location = /piwik.js {
satisfy any;
allow all;
auth_basic off;
try_files $uri =404;
}
location / {
auth_basic "Bitte authentifiziere dich.";
auth_basic_user_file htpasswd/pass;
satisfy any;
include pass_ip;
deny all;
try_files $uri $uri/ /index.php?$args;
}
...
現在,我可以從應用程式存取 piwik.js,並且還要求對analytics.example.org 進行基本驗證。但是,當我單擊“取消”時,網站的一部分將被加載,接下來是基本身份驗證、取消、加載等。
--- 更新 2 ---
我還在指令中添加了基本的身份驗證內容location ~ .php$
,現在它正在工作,但是將它放在兩個地方似乎不正確。無論如何,我可以讓它變得更好嗎?
答案1
最近遇到了類似的挑戰,您的位置區塊現在看起來是正確的:
持續的變化可能是由於瀏覽器快取造成的,這也導致我在這個主題上浪費了數小時的時間。每當您更改任何 http 身份驗證設定時,請完全關閉瀏覽器,最好將其重置,然後重新開啟頁面並查看新設定是否按預期工作。這對我來說很有效。
會將此添加為對上面答案的評論,但還沒有足夠的代表點。