nginx匹配规则说明以及匹配的优先级

html-css015

nginx匹配规则说明以及匹配的优先级,第1张

location = / {

proxy_pass http://tomcat:8080/index

}

location ^~ /static/ {

root /webroot/static/

}

location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {

root /webroot/res/

}

location / {

proxy_pass http://tomcat:8080/

}

rewrite 语法last – 基本上都用这个 Flagbreak – 中止 Rewirte,不再继续匹配redirect – 返回临时重定向的 HTTP 状态 302permanent – 返回永久重定向的 HTTP 状态 3011、下面是可以用来判断的表达式:-f 和 !-f 用来判断是否存在文件-d 和 !-d 用来判断是否存在目录-e 和 !-e 用来判断是否存在文件或目录-x 和 !-x 用来判断文件是否可执行2、下面是可以用作判断的全局变量例: http://localhost:88/test1/test2/test.php?k=v server_port:88 document_uri:/test1/test2/test.php request_filename:D:\nginx/html/test1/test2/test.phpredirect 语法server {

listen 80

server_name start.igrow.cn

index index.html index.php

root html

if ( ") {

rewrite ^(. ) http://star.igrow.cn{

valid_referers none blocked start.igrow.cn sta.igrow.cn

if ( host/logo.png

}

}

根据文件类型设置过期时间location ~ .(js|css|jpg|jpeg|gif|png|swf) request_filename) {

expires 1h

break

}

}

禁止访问某个目录location ~* .(txt|doc)${

root /data/www/wwwroot/linuxtone/test

deny all

}

本文来自 Gove_chan 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/qq_15766181/article/details/72829672?utm_source=copy

这个问题的原因应该来说比较多

1、是否配置正确 server_name

2、DNS域名解析是否正确,可以ping一下你的域名

3、是否需要做url重写或者url重写是否配置正确

4、是否需要单独对于css js及图片这些单独指定目录

5、检查css js文件请求的地址是否正确以及服务器目录中是否有相应的文件

与nginx的打交道很多,经常遇到404问题,每次出现都需要查资料才能写出结果。这次来总结一下。 访问的域名是 localhost/store/add_order.html web根目录是/www/web store是子目录。 配置如下 以上location存在3个匹配规则 最先匹配 location = /50x.html 再次匹配location ~ .php$ 最后 匹配 / 例如 http://localhost/store/add-order.html将去 /www/web 目录下寻找 store/add-order.html 文件。 例如 http://localhost/store/add-order.php将 /www/web 目录下和 store/add-order.php 组合成 SCRIPT_FILENAME,传递给php组件。 例如 http://localhost/api/add-order.php则代理成 http://www.api.com/add-order.php但是如果 没有写 / 结尾,proxy_pass http://www.api.com 则代理成 http://www.api.com/api/add-order.phplocation用于匹配url 它进行的是模糊匹配 没有“/”时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等 而有“/”时,location /abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求 那么产生的效果如下: 访问根目录/, 比如 http://localhost/ 将匹配规则A 访问 http://localhost/login 将匹配规则B, http://localhost/register 则匹配规则H 访问 http://localhost/static/a.html 将匹配规则C 访问 http://localhost/a.gif , http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C 访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。 访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML 不会匹配规则G,(因为!)。规则F,规则G属于排除法,符合匹配规则也不会匹配到,所以想想看实际应用中哪里会用到。 访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候nginx转发请求给后端应用 服务器 ,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。