论坛风格切换切换到宽版
  • 623阅读
  • 0回复

nginx配置文件location使用实例:屏蔽IP/屏蔽蜘蛛/防盗链/重写/重定向等 [复制链接]

上一主题 下一主题
离线李唐
 

只看楼主 倒序阅读 0楼 发表于: 2023-04-02
在上文《nginx.conf location 修饰符解释及示例详解》中,我们对nginx location有了一定的了解,在本文中,我们将继续通过多个实例来了解location指令。
参数解释
  1. location [=|~|~*|^~] /uri/ { }
  • = 开头表示精确匹配。
  • ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
  • ~ 开头表示区分大小写的正则匹配。
  • ~* 开头表示不区分大小写的正则匹配。
  • !~!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则。
  • / 通用匹配,任何请求都会匹配到。
location使用实例
1、普通重写
  1. location / {
  2.     if (!-e $request_filename) {
  3.         rewrite  ^(.*)$  /index.php?s=$1  last;
  4.         break;  
  5.     }
  6. }
2、301重定向
  1. server_name xxx.com www.xxx.com;
  2. if ($host ~* xxx.com) {
  3.     rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
  4. }
把所有不带www的域名301永久重定向到带www的域名。
3、http跳转https
普通
  1. rewrite ^(.*) https://www.xxx.com$1 permanent;
有cdn
  1. if ( $http_from_https != 'on' ){
  2.      rewrite ^(.*) https://www.xxx.com$1 permanent;      
  3. }
4、取消目录执行权限
  1. location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
  2.     deny  all;
  3. }
5、屏蔽来源域名
  1. location / {
  2.     valid_referers www.baidu.com www.360.cn;
  3.     if ($invalid_referer){
  4.         return 403;
  5.     }
  6. }
6、防盗链
  1. location ~* \.(gif|jpg|png|webp)$ {
  2.    valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.;
  3.    if ($invalid_referer) {
  4.     return 403;
  5.     #rewrite ^/ 图片路径/403.jpg;
  6.    }
  7.    root /opt/www/image;
  8. }
7、屏蔽IP地址
  1. allow 1.1.1.2;
  2. allow all;
  3. deny all;
  4. deny 1.1.1.2
  5. location ^~ /xxx/xxx/xx/
  6. {
  7.       allow 172.0.0.1;
  8.       allow xxx.xxx.0.0/8;#表示允许xxx.xxx.0.1 ~ xxx.xxx.255.254  
  9.       allow xxx.0.0.0/16;#表示允许xxx.0.0.1 ~ xxx.255.255.254
  10.       allow xxx.xxx.xxx.x;
  11.       deny all;
  12. }
前端还有cdn情况
  1. map $http_x_forwarded_for  $clientIp {
  2.         ""      $remote_addr;
  3.         ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
  4. }
  5. if ($clientIp ~* "127.0.0.1|127.0.0.2") {
  6.    return 403;
  7.    break;
  8. }
8、屏蔽蜘蛛
  1. if ($http_user_agent ~ "FeedDemon|JikeSpider|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms" )
  2. {
  3.   return 403;
  4. }
9、禁止非GET|HEAD|POST方式的抓取
  1. if ($request_method !~ ^(GET|HEAD|POST)$) {
  2.   return 403;
  3. }

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
 
上一个 下一个