nginx -配置文件及虚拟主机+https

nginx -配置文件及虚拟主机+https

因为很多东西是自学的,都百度了很多坑,所有可能有描述不到位的,请见谅。

昨天同事请教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大块
  1. nginx程序相关信息
  2. http{}(全局)
  3. 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下的所有项目都是这个域名下的。下图

https://qnimg.ffing.cn/wp-content/uploads/2021/04/image-44.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

如果我们申请的单域名证书,就需要在每个server{}中添加对应的证书(或者虚拟主机中配置ssl)如下

https://qnimg.ffing.cn/wp-content/uploads/2021/04/image-45.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

其实还有一个服务器上多域名,多项目的情况,这种情况都需要在server{}中单独配置,这种情况少,但不是没有。

good good study, day day up!

发表评论

textsms
account_circle
email

nginx -配置文件及虚拟主机+https
因为很多东西是自学的,都百度了很多坑,所有可能有描述不到位的,请见谅。 昨天同事请教https这个问题,我就帮忙解决了一下,但发现虽然自己的思路很清晰,但却没办法很好的传授同事…
扫描二维码继续阅读
2021-04-21