Nginx ssl 一些问题
2017年11月2日
没有评论
官网说明:
Syntax: ssl on | off; Default: ssl off; Context: http, server Enables the HTTPS protocol for the given virtual server. It is recommended to use the ssl parameter of the listen directive instead of this directive.
这个是nginx官网对ssl的说明,官方建议采用监听在端口上设置ssl 如:listen 443 ssl;但是nginx没说为什么,下面通过测试了解下工作过程。
server { listen 80; listen 443; server_name abc.x.com; root /data/www #index.html; ssl on; }
如果在server Context 内设置ssl on,且此server在http Context是第一个server,那么这个server所监听的所有端口(这里是80和443,其他端口也如此),都会绑定ssl协议,在配置之后的server context时,如果想使用80端口作为http端口使用,访问时则会报错400 Bad Request,The plain HTTP request was sent to HTTPS port。
如果不想被占用,两个办法
方法 一
http { server { listen 80; server_name foo.x.com; root /data/www #index.html; } server { listen 80; listen 443; server_name abc.x.com; root /data/www #index.html; ssl on; } }
在配置ssl on;的server之前,配置一个http plain的server,这样80端口就会被绑定在http plain上了。(此方法属于奇技淫巧)
通过实际测试,nginx的端口应该是哪个协议先占用端口,之后这个端口在全局范围内就只能使用这个协议了。
方法二
server { listen 80; listen 443 ssl; server_name abc.x.com; root /data/www #index.html; }
通过监听listen 443 ssl; 来配置,这样就精确指定某个端口采用ssl协议了,不会影响其他端口。
这就是nginx官方为啥推荐采用listen 443 ssl;的原因吧
-简单备忘下,写的比较水
分类: Nginx使用及开发
近期评论