Nginx
我可以使用 nginx 為不同的位置使用不同的客戶端證書嗎
我的伺服器上有兩個不同的位置:
- 伺服器/位置A
- 伺服器/位置B
我想使用兩個客戶端證書 certA 和 certB 限制對這些位置的訪問。
locationA 只能使用 certA 訪問,而 locationB 只能使用 certB 訪問。
直到現在我使用不同的埠這樣做:
server { listen 11111 ssl; server_name ServerA; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_client_certificate certA.crt; ssl_verify_client optional; location /A { if ($ssl_client_verify != SUCCESS) { return 403; } alias /www/data/files/A.html; } } server { listen 22222 ssl; server_name ServerB; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_client_certificate certB.crt; ssl_verify_client optional; location /B { if ($ssl_client_verify != SUCCESS) { return 403; } alias /www/data/files/B.html; } }
我現在的問題是是否可以將兩個位置都放在同一個埠,例如(伺服器/A 和伺服器/B,而不是伺服器:11111/A 和伺服器:22222/B)?我需要如何建構我的 nginx 配置來實現這一點?
否。證書適用於伺服器塊,因為它必須對應於伺服器名稱。
不能僅對某個位置使用不同的證書。
然而,不同的伺服器塊是您唯一需要的,而且您已經擁有了。只需添加兩個埠為 443 的伺服器塊,使用不同
server_name
的 s 及其對應的證書。