NGINX auth cơ bản chỉ dành cho POST


8

Tôi đang thiết lập nginx để phục vụ kho Mercurial. Nó hoạt động khi hoàn toàn không sử dụng xác thực cơ bản hoặc khi tôi sử dụng tất cả xác thực cơ bản.

Những gì tôi muốn làm là chỉ sử dụng auth cơ bản trên các yêu cầu POST, vì vậy bất kỳ ai cũng có quyền truy cập kéo, nhưng chỉ người dùng được xác thực mới có thể đẩy.

Tôi đã thử như sau

if ($request_method = POST) {
  auth_basic "Restricted";
  auth_basic_user_file /path/to/userfile
}

Tuy nhiên, nó phàn nàn về "lệnh auth_basic không được phép ở đây".

Làm sao tôi có thể giải quyết việc này?

Câu trả lời:


13

Bạn nên sử dụng limit_except:

limit_except GET HEAD {
    auth_basic 'Restricted';
    auth_basic_user_file /path/to/userfile;
}

Nó hoạt động kể từ nginx 0.8.48, trong các phiên bản cũ hơn có một lỗi fastcgi_passkhông được kế thừa bên trong khối giới hạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.