与我有关如何使用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.local
或https://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;
请注意以下几点:
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