Puncte:1

NGINX auth_basic exclude cererea GET la un anumit script PHP

drapel cn

Se pare că nu îmi dau seama cum să exclud o anumită locație din auth_basic.

Server {
        nume_server example.com;

        rădăcină /var/www/html;

        index index.php;

        auth_basic „Nein nein nein”;
        auth_basic_user_file .htpasswd;

        Locație / {
                try_files $uri $uri/ =404;
        }

        locație ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        # acest script are nevoie de acces gratuit și preia parametrii șirului de interogare
        locație /sub/script.php {
                auth_basic off;
        }

        # asta funcționează bine
        locație /sub/a-javascript.js {
                auth_basic off;
        }
...

Locația /sub/script.php are nevoie de acces gratuit. De asemenea, ar fi bine dacă i-ar permite doar cererea GET. Problema mea pare să fie parametrii de interogare care vin după ea.

Scriptul este întotdeauna solicitat cu mulți parametri de interogare script.php?param=something&other_param=somethingelse&etc=etc

Paul avatar
drapel cn
Nu sunt clar de ce `location ~ /sub/script\.php$ { auth_basic off; include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; limit_except GET { deny all; } }`, dar nu le-am folosit până acum.
drapel sv
Paul are dreptate. Vă rugăm să știți că utilizarea limit_except pentru a permite GET permite și cererile HEAD.
drapel cn
@Paul încă primește 401'd
Paul avatar
drapel cn
Mai este ceva în jurnale? Setarea `error_log debug;` oferă ceva mai mult?
Paul avatar
drapel cn
Oh, încercați și să mutați blocul `location ~ /sub/script\.php$...` pentru a fi deasupra blocului `location ~ \.php$...`, dacă nu ați făcut-o deja.
drapel cn
@Paul Da, se pare că mutarea acestuia deasupra blocului php a făcut truc. Mulțumiri!
Puncte:1
drapel cn

Configurația dvs. actuală corespunde cererilor pentru /sub/script\.php$ in cele ce urmeaza Locație bloc:

        locație ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

Utilizați următoarea configurație care plasează /sub/script\.php$ locație deasupra \.php$ locatie deoarece nginx se va opri evaluarea la prima regex potrivită Locație.

Server {
        nume_server example.com;

        rădăcină /var/www/html;

        index index.php;

        auth_basic „Nein nein nein”;
        auth_basic_user_file .htpasswd;

        Locație / {
                try_files $uri $uri/ =404;
        }

        locație ~ /sub/script\.php$ {
                auth_basic off;
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                limit_except GET { deny all; } # Permite, de asemenea, HEAD
                }

        locație ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        # asta funcționează bine
        locație /sub/a-javascript.js {
                auth_basic off;
        }
...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.