Nginx配置文件基本原理
Nginx本身是一个网络服务的路由器,网络服务包括HTTP和tcp协议,其配置文件是类似Json的一种格式,其中以server、location最为主要
http && server
HTTP代表在该计算机上启动HTTP路由,可以开启不同的server服务,所以HTTP内可以包括多个server
1 | http { |
location
服务器入门中讲到服务器的一个基本原理就是网络地址和磁盘地址转换,静态服务器本身存在的意义便在此
如果我们以 www.domin.com:8080/content/a 来访问服务器,会进入Nginx配置文件中在8080 listen的server
Host | path |
---|---|
www.domin.com | /content/a |
根据以上表格,我们可以将path对应到一个磁盘上的路径,使用的配置就是location
1 | server { |
从上文可以看出,我们不仅可以对网络地址的不同路径进行不同的目录映射,还可以为不同的目录指定不同的index文件
若在root目录下添加了文件或目录,请保证一定有 读和执行的权限 若要可写,则还需设置写权限
因为Mac电脑的权限管理很严格,在Mac中很容易出现,如果是Linux的root用户则少见
server name
我开始学习的时候,对server中除了listen 还有一个 server name 比较困惑,参考Nginx官方文章Nginx如何处理http服务,了解到Nginx可以对不同域名来的服务进行分类处理
由于DNS的存在,我们可以使用一个IP对应多个域名,比如 www.a.com 和 www.b.com 这个称之为host,后边的才是路径path,Nginx会对HTTP的Request报文做如下处理
1 | POST /psas/bug/image/confirm HTTP/1.1 <== 第一行才是path |
- 接收到请求后去HTTP报文头拿host字段
- 去和server name字段进行匹配,哪个匹配上用哪个处理
- 如果没有匹配上,就用listen了当前端口的默认server处理
- 默认server可以自己设置,如果没有设置,默认配置文件中最靠前是默认
Nginx强大在哪里
Nginx不仅可以通过上文举例中的 固定字符 进行匹配, 还可以通过 正则表达式或者通配符 进行模糊匹配
而且不仅有目录映射功能,还可以进行HTTP的转发和代理,才这么流行,所谓反向代理就是基于其来完成的
Nginx配置详解
具体复杂的配置如何书写,请参考这篇十分强大通俗易懂的教程,本系列下一篇对Blog进行一份备份以防丢失