nginx 常用指令 try_files allow root alias的使用
~ 为区分大小写匹配~* 为不区分大小写匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录-x和!-x用来判断文件是否可执行last 相当于Apache里的[L]标记,表示完成rewritebreak 终止匹配, 不再匹配后面的规则redirect 返回302临时重定向 地址栏会显示跳转后的地址permanent 返回301永久重定向 地址栏会显示跳转后的地址变量名功能$host请求信息中的 Host,如果请求中没有Host行,则等于设置的服务器名$request_method客户端请求类型,如 GET、 POST$remote_addr客户端的 IP地址$args请求中的参数$content_length请求头中的 Content-length字段$content_type请求头中的 Content-Type字段$http_user_agent客户端agent信息$http_cookie客户端cookie信息$remote_addr客户端的IP地址$remote_port客户端的端口$server_protocol请求使用的协议,如HTTP/1.0、·HTTP/1.1$server_addr服务器地址$server_name服务器名称$server_port服务器的端口号$document_root针对当前请求的根路径设置值$uri请求的URI,可能和最初的值有不同,比如经过重定向之类的$document_uri与$uri相同$limit_rate对连接速率的限制$request_uri请求的URI,带查询字符串$query_string与$args相同$scheme所用的协议,http或者是https
location /i/ { root /data/w3; # 为请求设置根目录}# 访问 /i/test.jpg 实际查找的路径为 /data/w3/i/test.jpglocation /i/ { alias /data/w3/; # 为请求设置指定位置的替换}# 访问 /i/test.jpg 实际查找的路径为 /data/w3/test.jpg
root指定目录,路径为 root + $uri
alias指定目录 路径为 alias + 资源名
alias 只能作用在location中,而root可以存在server、http和location中。
alias 后面必须要用 / 结束,否则会找不到文件,而 root 则对 / 可有可无。
如果别名是在用正则表达式定义的位置中使用的,那幺这种正则表达式应该包含捕获,别名应该引用这些捕获 ,例如:
location ~ ^/users/(.+\\.(?:gif|jpe?g|png))$ { alias /data/w3/images/$1;}
能用root实现的不要用alias
访问控制指令
# 访问控制location / { allow xx.xx.xx.xx; allow 10.1.0.0/16; allow 192.0.0.0/8; allow 172.0.1.0/24; # allow all; deny all;}# 执行时 从上到下,匹配到就跳出
try_files指令说明
try_files指令
语法:try_files file ... uri 或 try_files file ... = code
默认值:无
作用域:server location
其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那幺$args不会自动保留,如果你想保留$args,则必须明确声明。
try_files $uri $uri/ /index.php$is_args$args;
nginx 常用指令 try_files allow root alias的使用