这里主要对nginx的Location的一些跳转部署作简单说明(在项目的部署过程当中)。
由于在项目的部署中,常常须要对一些特定的访问uri进行跳转或者组合,或者对特定的访问文件须要进行访问的限定,都属于nginx的部署设计范畴,由于运用太过于灵活,这里先对最基础的进行整理详解。
Location的语法(因为在前面博客里写过,这里进行原理整理)
1. Location / { } 访问该设置的域名下面,会所有跳转(注意这里是网址符不是转义符,由于http://www.test.com/***必定是有 / 符号的 )
要使得访问的全部页面进行跳转到某个网站(就是反向代理的设置)
location /
{
//代理的网址
proxy_pass http://www.test.com;
//设置代理后的头部Host部分 把host改为本身
proxy_set_header Host $host;
//模拟客户端请求的IP 去请求
proxy_set_header X-Real-IP $remote_addr;
//全部的代理IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2.通常的平台网站,可能图片消耗流量过多(防止别人盗链)须要进行必定的盗链设置(对本网站的图片进行防盗链设置)
location ~ \.(gif|jpg|png|swf|flv)$
{
valid_referers none blocked www.test.com;
if ( $invalid_referer ) {
return 404;
}
}
PS匹配语法:
~ 对大小写敏感的匹配
\. 匹配 .(转义符,若是没有\转义符表示匹配任何字符)
若是是须要对某个目录进行防盗链设置(例如/img/目录下面)
location ~ /img/
{
valid_referers none blocked www.test.com;
if ( $invalid_referer ) {
return 404;
}
}
PS:特别注意location的格式
location ~
{
//这里是内容
}
当把{} 写在location一行的时候,常常会致使无效的状况
location的匹配规则:正则 location 匹配让步普通 location 的严格精确匹配结果;但覆盖普通 location 的最大前缀匹配结果
3.有些目录只能容许指定IP进行访问(固然在PHP内部也能够对指定的IP进行访问控制)
location /img/
{
deny 192.168.1.25;
allow 192.168.1.70;
}
PS:有的时候指定IP段(192.168.1.25/192.168.1.125这种)进行指定访问 会失效
nginx