우리는 Nginx를 웹 애플리케이션 서버에 대한 리버스 프록시로 사용합니다. Nginx는 SSL을 처리하지만 그렇지 않으면 리버스 프록시 역할을합니다.
요청에 유효한 클라이언트 인증서가 /jsonrpc
필요하지만 다른 곳에서는 요구하지 않습니다. 우리가 찾은 가장 좋은 방법은
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/;
}
}
이것은 대부분의 브라우저에서 잘 작동하지만 Safari 및 Chrome-on-Android와 같은 일부 브라우저는 웹 사이트의 위치에 관계없이 클라이언트 인증서를 제공하라는 메시지를 표시합니다.
우리는 어떻게 Nginx가 우리의 /jsonrpc
위치를 제외한 모든 곳에서 클라이언트 인증서를 수락하지만 실제로 신경 쓰지 않습니까?
server
블록 에 배치하는 방법을 알 수 없다면 아마도 우리가 결국 할 일 입니다. 우리는 Apache를 사용할 때 이와 같은 문제가 없었으므로 여기에서 작동하는 설정이 있기를 바랍니다.