|
|
|
|
|
在上文《nginx.conf location 修飾符解釋及示例詳解》中,我們對nginx location
有了一定的了解,在本文中,我們將繼續(xù)通過多個(gè)實(shí)例來了解location
指令。
參數(shù)解釋
location [=|~|~*|^~] /uri/ { … }
/static/20%/aa
,可以被規(guī)則^~ /static/ /aa
匹配到(注意是空格)。location使用實(shí)例
1、普通重寫
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
2、301重定向
server_name xxx.com www.xxx.com;
if ($host ~* xxx.com) {
rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
}
把所有不帶www
的域名301永久重定向到帶www
的域名。
3、http跳轉(zhuǎn)https
普通
rewrite ^(.*) https://www.xxx.com$1 permanent;
有cdn
if ( $http_from_https != 'on' ){
rewrite ^(.*) https://www.xxx.com$1 permanent;
}
4、取消目錄執(zhí)行權(quán)限
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
deny all;
}
5、屏蔽來源域名
location / {
valid_referers www.baidu.com www.#;
if ($invalid_referer){
return 403;
}
}
6、防盜鏈
location ~* \.(gif|jpg|png|webp)$ {
valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www.domain.com/403.jpg;
}
root /opt/www/image;
}
7、屏蔽IP地址
allow 1.1.1.2;
allow all;
deny all;
deny 1.1.1.2
location ^~ /xxx/xxx/xx/
{
allow 172.0.0.1;
allow xxx.xxx.0.0/8;#表示允許xxx.xxx.0.1 ~ xxx.xxx.255.254
allow xxx.0.0.0/16;#表示允許xxx.0.0.1 ~ xxx.255.255.254
allow xxx.xxx.xxx.x;
deny all;
}
前端還有cdn情況
map $http_x_forwarded_for $clientIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}
if ($clientIp ~* "127.0.0.1|127.0.0.2") {
return 403;
break;
}
8、屏蔽蜘蛛
if ($http_user_agent ~ "FeedDemon|JikeSpider|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms" )
{
return 403;
}
9、禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
語法總結(jié)
if語句
#判斷訪問域名:
if ($host ~* test.com)
#判斷user_agent:
if ($http_user_agent ~* "baiduspider" )
#判斷訪問來源域名:
valid_referers www.baidu.com;if ($invalid_referer){return 403;}
#判斷METHOD:
if ($request_method !~ ^(GET|HEAD|POST)$)
#判斷url中?后參數(shù):
if ($request_uri ~* ^/list.php\?([^_]+)(_[0-9]+)$)
#判斷url路徑地址:
if ($uri ~* ^/list.php\?([^_]+)(_[0-9]+)$)
#判斷ip:
if ($remote_addr ~* "127.0.0.1|127.0.0.2")
處理方式
#禁止訪問:
return 403; deny all;
#重定向到:
rewrite ^/(.*)$ http://www.test.com/$1 permanent;
#重寫到:
rewrite ^(.*)$ /index.php?s=$1 last;
全局變量
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query
總結(jié)
本文通過多個(gè)實(shí)例介紹了nginx中的location
指令的用法,你還可以閱讀此文《nginx.conf location 修飾符解釋及示例詳解》了解更多有關(guān)nginx location的知識。
相關(guān)文章