我需要在 nginx 上配置允许 https 的反向代理。它的工作方式如下:
- 客户端连接站点(端口80);
- 反向代理将其重定向到端口 443;
- 通信使用我的证书加密;
- 然后客户端请求通过 proxy_pass 传递到另一个站点。
我的问题出在 3 和 4 中。我的配置成功完成了所有这些操作并重定向到它应该重定向到的站点,但它没有使用我的证书,而是使用了我要重定向到的站点的证书。
配置:
server {
listen 80;
server_name example.com;
return 301 https://$server_name:443;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
location {
proxy_pass https://another-site.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
正如我说过的,这可行,但它不使用我在该配置中指定的证书。
答案1
我认为你必须在里面添加更多配置
喜欢
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl on;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
keepalive_timeout 50;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:AES256-SHA:AES; #Check ciphers at http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams_4096.pem; check dhparams at nginx documentation
ssl_session_cache shared:ssl_session_cache:20m;
}
答案2
我想我已经搞清楚了。配置正确,而且可以正常工作,问题是我将流量重定向到的网站也使用自己的证书包装流量,因此看起来我没有使用自己的证书。我通过尝试将流量重定向到另一个网站解决了这个问题