Nginx'i web uygulama sunucumuzun ters proxy'si olarak kullanıyoruz. Nginx SSL'imizi ve benzerlerini işler, ancak aksi takdirde ters proxy olarak işlev görür.
İstekler için geçerli bir müşteri sertifikası talep etmek istiyoruz, /jsonrpc
ancak başka bir yerde talep etmiyoruz. Bulduğumuz en iyi yol
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/;
}
}
Bu, çoğu tarayıcı için iyi çalışır, ancak Safari ve Android'de Chrome gibi bazı tarayıcılar, kullanıcının web sitesinde nereye giderse gitsinler bir istemci sertifikası sağlamasını ister.
Nginx'in konumum dışında her yerde bir müşteri sertifikasını kabul etmesini ancak gerçekten umursamamasını nasıl sağlarız /jsonrpc
?
server
bloğa koymak için bir yol bulamazsak, muhtemelen bunu yapacağız . Apache'yi kullanırken aynı sorunu yaşamadık, bu yüzden burada çalışacak bazı ayarların olmasını umuyordum.