Nginx
使用基本身份驗證保護 Nginx 上的 Piwik,但允許訪問 piwik.js
我在我的伺服器上執行了 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$
,它現在正在工作,但是在兩個地方使用它似乎並不正確。無論如何我可以讓它變得更好嗎?
最近遇到了類似的挑戰,您的位置塊現在看起來是正確的:
Nginx:基於Realm的Auth Basic的選擇性開/關
持續不斷的變化可能是由於瀏覽器記憶體造成的,這也導致我在這個話題上浪費了數小時的時間。每當您更改任何 http auth 設置時,請完全關閉瀏覽器,最好重置它,然後重新打開頁面並查看新設置是否按預期工作。這對我有用。
會將此作為評論添加到上面的答案中,但還沒有足夠的代表點。