如何使用nginx设置SSL反向代理?

与我有关如何使用nginx设置反向代理的问题相关,我现在被困在设置一个额外需要SSL连接。

我有docker集装箱提供映射的SSL端口4430到我的主机系统。 networking服务器正在使用自签名证书。

在我的/etc/hosts文件中,我定义了:

 127.0.0.1 app.local 

而我的nginx服务器configuration如下所示:

 server { listen 80; server_name app.local; location / { return https://$host$request_uri; } } server { listen 443; server_name app.local; location / { proxy_pass https://127.0.0.1:4430; } } 

当我使用https://127.0.0.1::4430访问我的webapp时,它工作正常。 我第一次接到证书的警告,然后我必须允许。

然而,当通过http://app.localhttps://app.local ,我的浏览器显示:

 SSL connection error ERR_SSL_PROTOCOL_ERROR 

我也期待证书警告出现,然后我可以允许。

在nginx中使用SSL时如何获得反向代理?

要在nginx上终止SSL:

a)服务器部分需要指定端口和'ssl'

 listen 192.168.2.26:443 ssl; 

b)然后服务器块也指定certs和ssl参数

 ssl_certificate new-cert.cer; ssl_certificate_key new-cert.key; ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; 

你近了,我想(我自己是Nginx的新手),但是你的第二个服务器块需要更多一点…我的服务器上有一个这样的:

 listen 443 ssl; listen [::]:443 ipv6only=on ssl; charset utf-8; client_max_body_size 75M; server_name example.com www.example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; 

请注意以下几点:

  1. listen指令指定ssl。
  2. 指定了证书和证书密钥。 证书应该放在容易访问的地方,因为它被发送给访问您的网站的每个人。 关键在于只有需要它的用户才能访问它。

ipv6,字符集,和客户端最大的身体线是我在我的服务器上,但不需要你在这里做什么。 你可以命名这些东西并把它们放在任何地方,所以如果你把它们存放在别的地方,不要挂在确切的文件名或位置上。 这正是我喜欢做的,我的ls -l输出是:

 -rw-r--r-- 1 root root 1887 Oct 8 14:16 /etc/ssl/certs/example.com.crt -rw-r----- 1 root ssl-cert 1704 Oct 8 13:47 /etc/ssl/private/example.com.key