这里介绍一个虚拟主机的配置结构,首先看一下虚拟主机的最小化配置。
#/etc/nginx/conf.d/yxjc123.conf
server {
listen 80;
server_name yxjc123.com
return 200 "Hello";
}
以上便是nginx虚拟主机的最小化配置。接下来,我们在上面最小化配置的基础上,讲解root
,location
和try_files
指令。root指令
root 指令用于配置请求的根目录,允许 nginx 将传入的请求映射到文件系统上。
server {
listen 80;
server_name yxjc123.com;
root /home/www/yxjc123;
}
它可以根据服务器的路径返回相应的内容。如:yxjc123.com/abc.html 则返回 /home/www/yxjc123/abc.html。
yxjc123.com/path/hello.html 则返回 /home/www/yxjc123/path/hello.html。
location指令
location指令用于对请求的url配置相应的路径或者反向代理。
简单来说location指令用于配置url的匹配模式。
它的语法是 location [modifier] path
。例如:
location /abc{
# ...
}
没有修饰符(modifier)的时候,路径后面可以匹配任意url,上面的例子可能匹配如下:
/abc
/abcc
/abc123
/abc/def/index.html
...
在一个虚拟主机的配置中,我们也可以使用多个location指令。
server {
listen 80;
server_name yxjc123.com;
root /hom/www/yxjc123;
location / {
return 200 "root";
}
location /abc{
return 200 "abc";
}
}
nginx也提供了一些可以与location相结合使用的修饰符
- = - 完全匹配
- ^~ - 优先匹配
- ~ && ~* - 正则表达式匹配
- no modifier - 前缀匹配
在匹配顺序上,nginx根据上面的规则优先级由高到底的权重依次匹配,其中完全匹配的优先级最高。其次是优先匹配,然后是正则表达式。
location /match {
return 200 '前缀匹配';
}
location ~* /match[0-9] {
return 200 '正则匹配不区分大小写';
}
location ~ /MATCH[0-9] {
return 200 '正则匹配区分大小写';
}
location ^~ /match0 {
return 200 '优先匹配';
}
location = /match {
return 200 '完全匹配';
}
try_files 指令
try_file 指令位于location 指令块中。 try_files 指令语法如下:
location / {
try_files $uri $uri/ /default/index.html;
}
在该配置中首先尝试$uri请求时候的文件时候存在,如果不存在则返回 /default/index.html。举例说明 。
访问 yxjc123.com/abc/hello.html 不存在时,则返回 /default/index.html。