Tôi muốn thêm các điều khiển truy cập vào toàn bộ vhost trên một proxy ngược. Tôi đang sử dụng xác thực yêu cầu phụ nginx để thực hiện việc này. Tương tác dự kiến là người dùng sẽ nhận được thông báo lỗi có liên kết đến trang đăng nhập hoặc trang đăng nhập được hiển thị tại URL được yêu cầu. Khi hoàn tất quá trình đăng nhập, sẽ có một số cơ chế để người dùng điều hướng/tải lại URL được yêu cầu ban đầu. Bản thân proxy ngược (tức là không có PHP) không có khả năng tạo tập lệnh, điều này giới hạn các tùy chọn để chụp và truyền URL gốc thông qua quy trình xác thực.
Kỳ vọng của tôi: nếu yêu cầu xác thực không thành công (tức là http://authprovider.example.com:8081/gateway/index.php trả về 401) Tôi muốn nội dung cụ thể được trả về tại URL được yêu cầu mà không cần chuyển hướng và có trạng thái 4xx.
người phục vụ {
nghe 80;
server_name www.example.com;
gốc/var/www/html;
error_page 401 iprestricted.html;
## Điều này cung cấp phản hồi cho người dùng khi yêu cầu không được phép
## (bao gồm một liên kết để đăng nhập)
# vị trí /iprestricted.html {
# try_files $uri $uri/ =404;
# }
# Điều này thực hiện kiểm tra yêu cầu phụ....
vị trí /hạn chế {
nội bộ;
proxy_pass http://authprovider.example.com:8081/gateway/index.php ;
tắt proxy_pass_request_body;
proxy_set_header Độ dài nội dung "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Original-URI $request_uri;
}
địa điểm / {
auth_request/bị hạn chế;
proxy_pass http://localwebserver/;
}
}
Tuy nhiên:
Nếu vị trí /iprestricted.html{...}
được nhận xét, tôi nhận được một vòng lặp chuyển hướng
tại http://www.example.com
Nếu nó không được ghi chú, thì bất kỳ yêu cầu nào cũng nhận được phản hồi 302 với Vị trí /iprestricted.html trả về mã trạng thái 200
Làm cách nào để triển khai xác thực yêu cầu phụ mà không cần chuyển hướng?
Có cách nào khác để nắm bắt URL gốc và chuyển URL này qua bước xác thực chỉ bằng cách sử dụng cấu hình nginx không?
Tôi đã thử thêm add_header WWW-Xác thực "Vương quốc cơ bản=bipdevtest";
trong mỗi và cả hai vị trí trên nhưng điều này không được gửi lại trong phản hồi HTTP.