Answers:
对于任何想使用nginx遇到此问题的人,都可以像设置任何普通代理一样进行设置,并且要接受来自后端的自签名证书,您需要提供导出的pem证书(也许是密钥)并设置ssl验证关。例如:
...
server {
listen 10.1.2.3:80;
server_name 10.1.2.3 myproxy.mycompany.com;
location / {
proxy_pass https://backend.server.ip/;
proxy_ssl_trusted_certificate /etc/nginx/sslcerts/backend.server.pem;
proxy_ssl_verify off;
... other proxy settings
}
如果您的安全后端使用服务器名称标识SNI,并且每个IP /端口对要服务多个主机,那么您可能还需要proxy_ssl_server_name on;
在配置中包括它。这适用于nginx 1.7.0及更高版本。
我认为您可能想要这样的东西(此示例显然简化了):
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 localhost;
listen 443 ssl;
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;
}
}
}
您唯一需要更改的就是明确显示“主机”-例如,如果您代理的主机名与nginx代理服务器上使用的主机名不同。
proxy_ssl_server_name on;
使用内置的Google管理的SSL将流量代理到Google App Engine上的主机时,我所需要做的就是做到这一点!(这不是自签名证书或其他任何东西,因此只需要一行)。感谢您的宝贵建议。