conf.d/和default.d/扩展配置文件目录
Nginx中引入扩展配置文件的目录是为了降低主配置文件nginx.conf的复杂度,Nginx的http块是由多个server块组成,每个server也是有多个location块组成的,这么多的server和location当然都可以放在一个主配置文件中,但还是server过多的情况下,会使得主配置文件变得十分庞大,而且也不便于管理与修改。因此引入了扩展配置文件目录。
conf.d/目录下存放server块的配置文件,default.d/目录下存放location块的配置文件,引用的时候使用include指令将相对应的server块配置文件和location配置文件加入各自的block块中即可。
http {
...<http全局指令>...
include /etc/nginx/conf.d/*.conf;
}
或者
server {
...<server全局指令>...
include /etc/nginx/default.d/*.conf;
}
fastcgi_params/fastcgi.conf
Nginx在fastcgi解析的时候,需要调用这两个文件中的服务器变量,内置的服务器变量如下,
这个文件的区别就是.conf比params多了一行fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
uwsgi_params
和fastcgi_params一样,这里是调用关于uwsgi协议的一些服务器变量。
scgi_params
这里是调用关于scgi协议的一些服务器变量。
mime.types
web资源类型配置文件,定义web资源的类型,即文件扩展名和资源类型的映射表,nginx就是根据这个映射表设置http请求响应头的Content-Type值。
mime.types在http块的全局配置中被引用,下面的指令的意思是根据mime.types定义web资源类型,如果在映射表中找不到对应关系,则使用default_type定义的默认资源类型。
koi-win/koi-utf/win-utf
这三个文件都是与编码转换映射相关的文件,用于在输出内容到客户端时,将一种编码转换到另一种编码。
koi-win: charset_map koi8-r < -- > windows-1251
koi-utf: charset_map koi8-r < -- > utf-8
win-utf: charset_map windows-1251 < -- > utf-8
3.虚拟主机
对Nginx而言,一个server块就是一个虚拟主机,我这里将每个server块的配置单独作为一个文件放入conf.d/目录下。然后在主配置文件中include命令包含进来即可。
关于虚拟主机的指令如下,
server {...} 虚拟主机开始的关键字
listen address[:port] [default_server]
虚拟主机监听的IP和端口
default_server定义该server为默认,如果所有server段都没有使用该参数,则第一个server为默认
该参数通常在地址列没有输入server_name,而是输入IP地址的时候,Nginx会定位在default_server的虚拟主机。
例: listen 192.168.124.100:80 default_server
server_name 指定虚拟主机的域名,可以定义多个域名,之间用空格隔开,可以使用通配符和正则表达式
server_name的作用:Nginx收到一个http请求的时候,会取出首部的server字段,然后和所有server_name字段进行比较,匹配则定位到对应的server块;
server可以是多个,相对应的server_name也会有多个,多个server_name之间的优先顺序是:
精确匹配
左侧通配符匹配 *.linux.com
这个左侧通配符匹配实际应用场景很广,、bbs.linux.com、blog.linux.com等都可以通过一个左侧通配符来完成
右侧通配符匹配 *
正则表达式匹配 ^.*\.linux\.com$
root 定义虚拟主机的网页根目录,可以是绝对路径,也可是相对路径
index 定义虚拟主机默认的首页文件
charset 定义网页的默认编码格式,既可以用于http全局,也可以用于server全局
access_log 同样既可以用于http全局,也可以用于server全局
location {...} 地址匹配开始的关键字,location块对URL地址匹配进行设置,支持正则表达式匹配
location和URL进行匹配,匹配成功则进行其中的处理。控制服务端的访问路径
= 精确匹配
~ 正则表达式匹配,区分大小写
~* 正则表达式匹配,不区分大小写
^~ URL前半部分匹配,忽略大小写
/ 通用匹配,因为所有的匹配都是以/为开始的
他们的优先级:
= -> ^~ -> ~或者~* -> /
例如: