因为很多东西是自学的,都百度了很多坑,所有可能有描述不到位的,请见谅。
昨天同事请教https这个问题,我就帮忙解决了一下,但发现虽然自己的思路很清晰,但却没办法很好的传授同事,尴尬。。。
申明一下,https只是一种协议,任何端口都可以实现这个的协议,不是必须是443端口(就譬如我的ffing.fun:88就用了https协议)
http默认端口80,即当我们访问http://ffing.cn和http://ffing.cn:80,在浏览器解析的效果是一样,加不加80都是一样的,这个是肯定的。
但!!!https虽然默认端口443,但不一定必须443,可以是任意端口,只是加入了ssl字段关联证书即可。
首先,了解一下nginx配置文件
默认配置文件位置 :/etc/nginx/nginx.conf
- nginx.conf的配置里主要分了3大块
- nginx程序相关信息
- http{}(全局)
- server{}(虚拟主机)
user
http {
server{}
}
下面我做个简单的nginx.conf配置文件做个讲解
#第一部分,nginx相关信息:用户、工作内核数、错误日志、pid user nginx; (nginx的执行用户) worker_processes auto; (cpu内核数量) error_log /var/log/nginx/error.log; (错误日志路径) pid /run/nginx.pid; (pid文件) #第二部分http,全局配置信息:这是配置的内容对server也生效,所以要根据情况配置配置(如果是通配符的证书,可以直接放这里实现全域名的ssl),最主要的要看include后加载的虚拟主机位置 http { keepalive(高可用集群) client_max_body_size(nginx上传大小) include /etc/nginx/conf.d/*.conf(!!!这里标注的你虚拟主机的配置文件路径,可以根据自己情况修改!!!) #第三部分server,虚拟主机配置:在nginx.conf中的server可以配置监听多个server,但后期维护比较麻烦,所有,建议这里默认配置80即可,或者直接删除server { listen (监听端口) root (站点路径) index (站点默认页) location (对象规则) 。。。 } server { listen root index location
}
}(注意,这个是http的大括号)
nginx虚拟主机配置
虚拟主机配置目录:需要看你的nginx.conf中include标识的位置,默认在/etc/nginx/conf.d/目录下,配置文件名字随意但必须以.conf结尾(通常规则就是域名+端口+.conf)
虚拟主机配置文件,其实就是nginx.conf中server{}模块
虚拟主机配置文件,配置注意事项
1.一个配置文件,只可以监听一个端口!!!但可以有多个域名。
2.如做跳转,避免“域名:端口”,尽量使用“ip:端口”(域名跳转时,会多个域名解析,加载时长会多1-2秒钟)
nginx配置https
先放下ssl字段
ssl_certificate 证书.pem;(证书路径绝对路径,方便后期管理)
ssl_certificate_key 证书.key;(证书路径绝对路径,方便后期管理)
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
如果我们的ssl证书是通配符域名,懒人操作就是直接放到nginx.conf中http{}字段中,实现全局的https,即你这个nginx下的所有项目都是这个域名下的。下图
如果我们申请的单域名证书,就需要在每个server{}中添加对应的证书(或者虚拟主机中配置ssl)如下
其实还有一个服务器上多域名,多项目的情况,这种情况都需要在server{}中单独配置,这种情况少,但不是没有。
发表评论