Chúng tôi sử dụng Nginx làm proxy ngược cho máy chủ ứng dụng web của mình. Nginx xử lý SSL của chúng tôi và như vậy nhưng mặt khác chỉ hoạt động như một proxy ngược.
Chúng tôi muốn yêu cầu chứng chỉ ứng dụng khách hợp lệ cho các yêu cầu /jsonrpc
nhưng không yêu cầu chúng ở bất kỳ nơi nào khác. Cách tốt nhất chúng tôi tìm thấy là
server {
listen *:443 ssl;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_client_certificate /etc/nginx/client-ca.crt;
ssl_verify_client optional;
location /jsonrpc {
if ($ssl_client_verify != "SUCCESS") { return 403; }
proxy_pass http://localhost:8282/jsonrpc-api;
proxy_read_timeout 90;
proxy_redirect http://localhost/ $scheme://$host:$server_port/;
}
}
Điều này hoạt động tốt đối với hầu hết các trình duyệt, nhưng một số trình duyệt như Safari và Chrome trên Android cuối cùng sẽ nhắc người dùng cung cấp chứng chỉ ứng dụng khách bất kể họ đi đâu trên trang web.
Làm thế nào để chúng tôi khiến Nginx chấp nhận nhưng không thực sự quan tâm đến chứng chỉ khách hàng ở mọi nơi ngoại trừ /jsonrpc
vị trí của chúng tôi ?
server
khối. Chúng tôi chưa gặp vấn đề tương tự khi sử dụng Apache, vì vậy tôi hy vọng có một số cài đặt sẽ hoạt động ở đây.