使用基本authentication保护Nginx上的Piwik,但允许访问piwik.js

我在我的服务器上运行了nginx,最近用这个configuration安装了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; } } 

我试图closures/piwik.js的基本身份validation,因为它是从应用程序本身请求的,它总是要求input用户名和密码。

我在这里做错了什么?

—更新1 —

更新的configuration:

 ... 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提供基本的身份validation。 但是,当我点击取消,网站的一部分被加载,下一个基本authentication,取消,加载等

—更新2 —

我也添加了基本authentication的东西到location ~ .php$指令,它现在正在工作,但有两个地方看起来不正确。 无论如何,我可以做得更好?

最近有一个类似的挑战,你的位置块现在看起来是正确的:

Nginx:基于领域的Auth Basicselect性开启/closures

持续的stream量可能是由于浏览器的caching,这也导致我浪费了几个小时的时间在这个话题上。 每当您更改任何http身份validation设置时,请完全closures浏览器,理想情况下重置浏览器,然后重新打开页面,查看新设置是否按预期工作。 这对我来说是诀窍。

本来会添加这个作为上述答案的评论,但没有足够的代表点。