nginx可以在端口80上侦听,但在443上使用SSL发送上行到后端?

对于PCI合规性,我的应用程序被迫使用反向代理服务器和后端应用程序服务器之间的安全/encryption连接,而进入反向代理的连接在端口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; } } } 

上面给出了:“400错误请求当我浏览www.mysite.com时,普通的HTTP请求被发送到HTTPS端口”。

我哪里错了? 这是否可行? Nginx是否比鱿鱼更好?

在此先感谢,G

proxy_pass能够代理到HTTPS,这不是一个问题。

你的configuration有错误。 删除线

 ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_verify_client off; 

这些都是在Nginx端打开SSL服务器,这意味着你的Nginx希望在端口80的SSL连接。由于浏览器发送普通的HTTP到端口80,Nginx抱怨“400错误的请求普通的HTTP请求被发送到HTTPS端口”