sch*_*oml 2 ssl nginx reverse-proxy ssl-certificate
我有 Nginx 作为 Web 服务器的代理运行,并且我想使用 TLS/SSL 客户端证书来保护访问。
这是我的 ssl 配置
server {
listen 443 ssl;
server_name www.domain.com;
ssl_certificate /etc/nginx/ssl/domain/server.crt;
ssl_certificate_key /etc/nginx/ssl/domain/server.key;
ssl_client_certificate /etc/nginx/ssl/clients/client_ca.pem
ssl_verify_client on;
Run Code Online (Sandbox Code Playgroud)
它工作得很好 - 但现在我需要允许在没有客户端证书的情况下从一个特定的 IP 地址访问我的网站。
有没有可能用 nginx 来做到这一点?
谢谢 :-)
这是我的解决方案:
server {
listen 443 ssl;
server_name www.domain.com;
ssl_certificate /etc/nginx/ssl/domain/server.crt;
ssl_certificate_key /etc/nginx/ssl/domain/server.key;
ssl_client_certificate /etc/nginx/ssl/clients/client_ca.pem
ssl_verify_client optional;
# Set global proxy settings
proxy_read_timeout 360;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
location /
{
if ($remote_addr = 1.2.3.4 )
{
proxy_pass http://10.10.10.1;
break;
}
if ($ssl_client_verify != "SUCCESS")
{ return 403; }
proxy_pass http://10.10.10.1;}
error_log /var/log/nginx/domain-error.log;
access_log /var/log/nginx/domain-access.log;
}
Run Code Online (Sandbox Code Playgroud)
IP 1.2.3.4 无需客户端证书即可访问该网站:-)
| 归档时间: |
|
| 查看次数: |
10335 次 |
| 最近记录: |