将 https 客户端的 header 转发到后端应用程序
Forward https client's header to backend application
我正在使用 nginx 作为后端应用程序的反向代理。
- 客户端使用 certificate-A.pem 连接到 nginx,nginx 使用与根 CA 链接的中间 CA 来验证客户端(一切正常)。
问题来了:
- nginx 必须使用与真实主机相同的 header 将请求转发到后端应用程序(包含 certificate-A.pem)。转发到后端应用程序的数据包必须与 nginx 接收到的客户端数据包相同。
为什么?因为我有大量的客户端要管理(每个客户端都有由同一个中间 CA 颁发的不同证书),后端需要证书(用来做东西)但我想 pre-verify 这个证书nginx(真的最快)
我厌倦了不同的配置,但我不知道如何 proxy_set 正确的 header
upstream proxy_server {
server 127.0.0.1:8443; <---my backend application
}
server {
listen 443 ssl;
listen [::]:443;
ssl_certificate /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw.pem;
ssl_certificate_key /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw-key.pem;
location / {
proxy_pass https://proxy_server;
proxy_redirect off;
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 X-Custom-Referrer $http_x_custom_referrer;
}
}
无法验证证书。
The packets forwarded to the backend application must be identical to the clients packets recived by nginx.
如果是这种情况,我相信您只需要在 stream
模式下使用 nginx 作为 TCP 代理。我不知道您是否能够在 nginx
端进行任何验证,但这完全取决于后端应用程序。
nginx
设置 SSL 连接并且 还 将加密数据传递到后端是不可能的(我不认为)。
我正在使用 nginx 作为后端应用程序的反向代理。 - 客户端使用 certificate-A.pem 连接到 nginx,nginx 使用与根 CA 链接的中间 CA 来验证客户端(一切正常)。
问题来了: - nginx 必须使用与真实主机相同的 header 将请求转发到后端应用程序(包含 certificate-A.pem)。转发到后端应用程序的数据包必须与 nginx 接收到的客户端数据包相同。
为什么?因为我有大量的客户端要管理(每个客户端都有由同一个中间 CA 颁发的不同证书),后端需要证书(用来做东西)但我想 pre-verify 这个证书nginx(真的最快)
我厌倦了不同的配置,但我不知道如何 proxy_set 正确的 header
upstream proxy_server {
server 127.0.0.1:8443; <---my backend application
}
server {
listen 443 ssl;
listen [::]:443;
ssl_certificate /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw.pem;
ssl_certificate_key /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw-key.pem;
location / {
proxy_pass https://proxy_server;
proxy_redirect off;
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 X-Custom-Referrer $http_x_custom_referrer;
}
}
无法验证证书。
The packets forwarded to the backend application must be identical to the clients packets recived by nginx.
如果是这种情况,我相信您只需要在 stream
模式下使用 nginx 作为 TCP 代理。我不知道您是否能够在 nginx
端进行任何验证,但这完全取决于后端应用程序。
nginx
设置 SSL 连接并且 还 将加密数据传递到后端是不可能的(我不认为)。