เราใช้ Nginx เป็น reverse proxy ไปยังเว็บแอพพลิเคชันเซิร์ฟเวอร์ของเรา Nginx จัดการ SSL ของเราและเช่นนั้นทำหน้าที่เป็น reverse proxy
เราต้องการใบรับรองลูกค้าที่ถูกต้องสำหรับคำขอ/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 ดังนั้นฉันหวังว่าจะมีการตั้งค่าบางอย่างที่จะใช้งานได้ที่นี่