需要澄清 nginx 反向代理服务器上的上游 SSL
我一直在阅读有关反向代理和保护与上游服务器的 ssl 连接的nginx 文档,但我仍然对哪些 ssl 证书去哪里感到困惑。我发现的许多示例都有 nginx 代理本地主机,但我的情况是端点位于不同的服务器、端口和物理位置。
我想在 nginx 服务器上解析多个域。每个域在其当前服务器上都有一个用于其实际域名的 ssl 证书。
现在,我的每台服务器都在其自己的网络位置和物理位置上运行,但我希望有一个点来管理这些端点。
我的最终结果应该是这样的
client
|
nginx
https://example1.com
https://example2.com
https://example3.com
x.x.x.x
|
-----------------------------------------
| | |
https://example1.com https://example2.com https://example3.com
a.b.c.d:1234 e.f.g.h:5678 i.j.k.l:9012
Run Code Online (Sandbox Code Playgroud)
现在https://example1.com解析为 abcd:1234,它安装了自己的 ssl 证书。因为我需要向客户端表示 nginx 服务器正在为域 example1.com 提供服务,所以我认为我需要将 example1.com ssl 移至前端运行的 nginx 服务器,对吧?如果我这样做,我应该在 abcd:1234 上使用什么 ssl 证书来维护安全的上游连接?
nginx 文档说 client.crt 和 server.crt,但 CA 使用域来注册它们。反向代理情况下的客户端和服务器是什么?对我来说,客户端是发出请求的浏览器。
哪些 ssl 证书位于反向代理上的哪个位置?
编辑:
我已经知道,只需将基于 url 的证书放在代理服务器上,您就可以看起来拥有安全连接。我希望知道的是要在后端服务器上放置哪些 ssl 证书。只是重复使用各自的证书吗?example1.com.crt代理服务器和后端服务器都可以吗?
对于 PCI 合规性,我的应用程序被迫在反向代理服务器和后端应用程序服务器之间使用安全/加密连接,而进入反向代理的连接是在端口 80 上,即反向代理需要充当 http-to -https 转换器。
一个简单的图:
IIS7<---端口443---nginx<----端口80----Internet
我正在为此评估使用 nginx 而不是鱿鱼,这是我目前在 nginx.conf 中的内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
server mybackendserver:443;
}
server {
server_name www.mysite.com
listen 80;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_verify_client off;
location = / {
proxy_pass https://backend;
proxy_set_header Host $http_host;
proxy_set_header X_FORWARDED_PROTO https;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我浏览到 www.mysite.com 时,上面给出:“400 Bad Request The plain HTTP request was sent to HTTPS …