我需要在网站和API端点之间实现SSL。端点为example.com/api/v1/。两者都在运行Nginx。 网站地址为example2.com
阅读nginx文档,我需要配置客户端证书。
所以在API服务器上,我需要创建一个客户端证书
然后在Nginx配置中将以下内容添加到我的Web服务器(example2.com)配置中:-
location /upstream {
proxy_pass https://example.com/api/v1/<endpoint>;
proxy_ssl_certificate /etc/nginx/client.pem;
proxy_ssl_certificate_key /etc/nginx/client.key
}
然后在我添加的API服务器(example.com)上
location /api/v1/<endpoint>;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_client_certificate /etc/ssl/certs/ca.crt;
ssl_verify_client off;
proxy_pass http://example2.com;
example2.com上已经有一个网站,因此我的Nginx配置中的位置部分。
然后我需要将生成的证书复制到Web服务器,并将它们安装在配置中指定的位置。
我明白这个意思了吗
更新
好的,所以我看起来我的第一个问题是您无法配置 ssl_verify_client在位置块中...所以我将不得不创建 像这样
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/public.crt;
ssl_certificate_key /etc/nginx/ssl/private.rsa;
ssl_client_certificate /etc/nginx/ssl/client_ca.pem;
ssl_verify_client on;
server_name api.my_domain.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app/api;
}
}