1.核心配置示例
基于不同的IP、不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块 ngx_http_core_module实现。
1.新建一个 PC web 站点
#
访问测试
[root@node100 ~]# curl www.root.org #
注意在访问主机中设解析
![](https://i-blog.csdnimg.cn/direct/c116d5a1445f453e8ef737959d01bfe2.png)
2.root 与 alias
root
:指定
web
的家目录,在定义
location
的时候,文件的绝对路径等于
root+location
alias
:定义路径别名,会把访问的路径重新定义到其指定的路径
,
文档映射的另一种机制
;
仅能用于
location
上下文
,
此指令使用较少
![](https://i-blog.csdnimg.cn/direct/1e07896306204e0492c41962d5cbba12.png)
![](https://i-blog.csdnimg.cn/direct/fa63143ce2c240f687da94c154fd4c28.png)
![](https://i-blog.csdnimg.cn/direct/c975baef46124cb6a0472b9d9ce29eff.png)
注意:
location
中使用
root
指令和
alias
指令的意义不同:
root #给定的路径对应于location中的/uri左侧的/
alias #给定的路径对应于location中的/uri的完整路径
location
的详细使用:
在一个
server
中
location
配置段可存在多个,用于实现从
uri
到文件系统的路径映射;
ngnix
会根据用户请求的
URI
来检查定义的所有
location
,按一定的优先级找出一个最佳匹配,
而后应用其配置在没有使用正则表达式的时候,
nginx
会先在
server
中的多个
location
选取匹配度最
高的一个
uri
uri
是用户请求的字符串,即域名后面的
web
文件路径
然后使用该
location
模块中的正则
url
和字符串,如果匹配成功就结束搜索,并使用此
location
处理
此请求
#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }
= #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立
即处理请求
^~ #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头
#对uri的最左边部分做匹配检查,不区分字符大小写
~ #用于标准uri前,表示包含正则表达式,并且区分大小写
~* #用于标准uri前,表示包含正则表达式,并且不区分大写
不带符号 #匹配起始于此uri的所有的uri
\ #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号
匹配优先级从高到低:
~/~*,(=, ^~),不带符号
匹配案例
-
优先级:
server {
listen 80;
server_name www.root.org;
location /test1/ {
root /data/web;
}
location ^~ /test2 {
root /data/web;
}
location /test3 {
root /data/web;
}
location ~* \.(t)$ {
root /data/web;
}
}
3.Nginx 账户认证功能
由 ngx_http_auth_basic_module 模块提供此功能
创建用户
htpasswd -cmb /usr/local/nginx/conf/.htpasswd admin root 123
#-b 表示非交互建立用户认证
[root@Nginx ~]# cat /usr/local/nginx/conf/.htpasswd
查看用户创建成功和密码
![](https://i-blog.csdnimg.cn/direct/aba78291f8d84d989dcba2ddecc782f9.png)
进入配置文件中,添加认证功能:
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
重启服务:
[root@Nginx ~]# nginx -s reload
输入账户名和密码后,成功登录
4.检测文件是否存在
try_files
会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如 果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退
URI
且必须存在,否则会出现内部500
错误。
语法格式 :
Syntax: try_files file ... uri;
try_files file ... =code;
Default: —
Context: server, location
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
![](https://i-blog.csdnimg.cn/direct/9bd139f2e87d4d719f3ce43becc65303.png)
进入测试:
![](https://i-blog.csdnimg.cn/direct/dc687885885942bc810d316b3406ac40.png)
由图可得路径下的地址文件并不存在,所以找不到 ,输出error default