Điểm:1

NGINX auth_basic loại trừ yêu cầu GET đối với tập lệnh php cụ thể

lá cờ cn

Tôi dường như không thể tìm ra cách loại trừ một vị trí cụ thể khỏi auth_basic.

người phục vụ {
        server_name example.com;

        gốc/var/www/html;

        chỉ số index.php;

        auth_basic "Nein nein nein";
        auth_basic_user_file .htpasswd;

        địa điểm / {
                try_files $uri $uri/ =404;
        }

        vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        # tập lệnh này cần quyền truy cập miễn phí và nhận tham số chuỗi truy vấn
        vị trí /sub/script.php {
                auth_basic tắt;
        }

        # cái này hoạt động tốt
        vị trí /sub/a-javascript.js {
                auth_basic tắt;
        }
...

Vị trí /sub/script.php cần truy cập miễn phí. Sẽ thật tuyệt nếu nó chỉ có thể cho phép yêu cầu GET đối với nó. Vấn đề của tôi dường như là các tham số truy vấn xuất hiện sau nó.

Tập lệnh luôn được yêu cầu với nhiều tham số truy vấn script.php?param=something&other_param=somethingelse&etc=etc

Paul avatar
lá cờ cn
Tôi không rõ tại sao `location ~ /sub/script\.php$ { auth_basic off; bao gồm đoạn trích/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; giới hạn_ngoại trừ NHẬN { từ chối tất cả; } }`, nhưng tôi chưa sử dụng chúng trước đây.
lá cờ sv
Phao-lô nói đúng. Vui lòng biết rằng việc sử dụng limit_except để cho phép GET cũng cho phép các yêu cầu HEAD.
lá cờ cn
@Paul vẫn nhận được 401'd
Paul avatar
lá cờ cn
Có bất cứ điều gì nhiều hơn trong các bản ghi? Cài đặt `error_log debug;` có cung cấp thêm gì không?
Paul avatar
lá cờ cn
Ngoài ra, hãy thử di chuyển khối `location ~ /sub/script\.php$...` lên trên khối `location ~ \.php$...`, nếu bạn chưa di chuyển.
lá cờ cn
@Paul Vâng, có vẻ như việc di chuyển nó lên trên khối php đã thực hiện thủ thuật. Cảm ơn!
Điểm:1
lá cờ cn

Cấu hình hiện tại của bạn phù hợp với yêu cầu cho /sub/script\.php$ về sau địa điểm chặn:

        vị trí ~ \.php$ {
            bao gồm đoạn trích/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

Sử dụng cấu hình sau để đặt /sub/script\.php$ vị trí phía trên \.php$ vị trí vì nginx sẽ ngừng đánh giá ở regex phù hợp đầu tiên địa điểm.

người phục vụ {
        server_name example.com;

        gốc/var/www/html;

        chỉ số index.php;

        auth_basic "Nein nein nein";
        auth_basic_user_file .htpasswd;

        địa điểm / {
                try_files $uri $uri/ =404;
        }

        vị trí ~ /sub/script\.php$ {
                auth_basic tắt;
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                giới hạn_ngoại trừ NHẬN { từ chối tất cả; } # Cũng cho phép HEAD
                }

        vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        # cái này hoạt động tốt
        vị trí /sub/a-javascript.js {
                auth_basic tắt;
        }
...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.