nginx 基础模块 2 虚拟机location等
一 虚拟主机
server { listen 80; server_name www.yang.com; #虚拟机主机重点,一样的ip端口,虚拟机主机就是靠这边的域名来路由内容的 root /yang/; #根目录 index index.html index.php; access_log /yang/yang_com_access.log main; location / { } }
#虚拟机主机只需要在conf.d目录里 另起一个.conf 文件,里面把server段配好就行了,如果是相同ip端口 用域名来区分,就像上面代码一样
二 日志
#这些字段是控制日志输出内容的
$remote_addr变量:记录了客户端的IP地址(普通情况下)。 $remote_user变量:当nginx开启了用户认证功能后,此变量记录了客户端使用了哪个用户进行了认证。 $time_local变量:记录了当前日志条目的时间。 $request变量:记录了当前http请求的方法、url和http协议版本。 $status变量:记录了当前http请求的响应状态,即响应的状态码,比如200、404等响应码,都记录在此变量中。 $body_bytes_sent变量:记录了nginx响应客户端请求时,发送到客户端的字节数,不包含响应头的大小。 $http_referer变量:记录了当前请求是从哪个页面过来的,比如你点了A页面中的超链接才产生了这个请求,那么此变量中就记录了A页面的url。 $http_user_agent变量:记录了客户端的软件信息,比如,浏览器的名称和版本号。
#设置访问日志的存储路径,error_log 是设置错误日志的
三.location
优先级
= 精确匹配:用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功就停止匹配,立即执行该location里面的请求。 ~ 正则匹配:用于正则uri前,表示uri里面包含正则,并且区分大小写。 ~* 正则匹配:用于正则uri前,表示uri里面包含正则,不区分大小写。 ^~ 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。 无 普通匹配(\);与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。 PS: 优先级从高到低
1 “=”精准匹配
location = /news/ { echo "test1"; } [ quail]# curl 192.168.249.132/news/ test1
2 "~"区分大小写正则匹配
location ~ \.(html) { echo ‘test2‘; } location ~ \.(htmL) { echo ‘test3‘; } [ quail]# curl 192.168.249.132/index.html test2 [ quail]# curl 192.168.249.132/index.htmL test3
3 “~*”不区分大小写的正则匹配
location ~* \.(html){ echo ‘test4‘; } [ quail]# curl 192.168.249.132/index.htmL test4 [ quail]# curl 192.168.249.132/index.html test4
4 “^~”不进行正则匹配的标准匹配,只匹配前缀
location ^~ /index/ { echo ‘test5‘; } [ quail]# curl 192.168.249.132/index/ test5 [ quail]# curl 192.168.249.132/index/heihei test5 [ quail]# curl 192.168.249.132/index/asdnmkalsjd test5
5 普通匹配
location / { echo ‘test6‘; } [ quail]# curl 192.168.249.132 test6