Schützen Sie Piwik auf Nginx mit einer Basisauthentifizierung, erlauben Sie jedoch den Zugriff auf piwik.js

Schützen Sie Piwik auf Nginx mit einer Basisauthentifizierung, erlauben Sie jedoch den Zugriff auf piwik.js

Ich habe nginx auf meinem Server zum Laufen gebracht und vor Kurzem Piwik mit dieser Konfiguration installiert:

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

Ich versuche, die Basisauthentifizierung für /piwik.js zu deaktivieren, da sie von der App selbst angefordert wird und immer nach Benutzername und Passwort fragt.

Was mache ich hier falsch?

--- Aktualisierung 1 ---

Aktualisierte Konfiguration:

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

Jetzt kann ich von der App aus auf piwik.js zugreifen und frage auch nach einer Basisauthentifizierung für analytics.example.org. Wenn ich jedoch auf „Abbrechen“ klicke, wird ein Teil der Website geladen, dann die Basisauthentifizierung, Abbrechen, Laden usw.

--- Aktualisierung 2 ---

Ich habe der Direktive auch die grundlegenden Authentifizierungsfunktionen hinzugefügt location ~ .php$und jetzt funktioniert es. Es scheint jedoch nicht richtig, es an zwei Stellen zu haben. Kann ich es irgendwie schöner machen?

Antwort1

Hatte vor Kurzem ein ähnliches Problem und Ihre Standortblöcke scheinen jetzt korrekt zu sein:

Nginx: Selektives Ein-/Ausschalten von Auth Basic basierend auf Realm

Der anhaltende Fluss ist wahrscheinlich auf das Browser-Caching zurückzuführen, was mir auch bei diesem Thema Stunden an Zeitverschwendung beschert hat. Wenn Sie HTTP-Authentifizierungseinstellungen ändern, schließen Sie den Browser vollständig, setzen Sie ihn idealerweise zurück, öffnen Sie die Seite erneut und prüfen Sie, ob die neuen Einstellungen wie erwartet funktionieren. Bei mir hat das funktioniert.

Hätte dies als Kommentar zur obigen Antwort hinzugefügt, habe aber noch nicht genügend Rep-Punkte.

verwandte Informationen