设为首页 收藏本站
查看: 1628|回复: 0

[经验分享] nginx访问控制、rewrite应用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-30 08:33:51 | 显示全部楼层 |阅读模式

nginx访问控制、rewrite应用

一、访问控制

在这里依然还是以default2.conf虚拟主机为例,配置文件位置default2.conf

1、允许某个ip访问 ,需要在default2.conf配置配文件中添加,具体如下图:

QQ截图20150630083251.png

规则如下:   

allow 127.0.0.1;

allow 192.168.21.97;

deny all;

只允许127.0.0.1和192.168.21.97来访问,其他的全部拒绝


退出保存

1)检查配置文件

2)重置配置文件

3)测试

     允许ip测试

[iyunv@mysql ~]# curl -x192.168.122.10:80 http://www.guhantai.cn/1.jpg-I
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Mon, 22 Jun
2015 15:21:05 GMT
Content-Type:
image/jpeg
Content-Length: 0
Last-Modified: Mon,
22 Jun 2015 01:16:22 GMT
Connection:
keep-alive
ETag:
"558761e6-0"
Expires: Thu, 02 Jul
2015 15:21:05 GMT
Cache-Control:
max-age=864000
Accept-Ranges: bytes

     禁止本地IP地址访问

QQ截图20150630083304.png

规则如下:

  deny 127.0.0.1;

allow all;


1)保存退出

2)检查配置文件

/usr/local/nginx/sbin/nginx -t

3)重置配置文件

[iyunv@mysql ~]# /usr/local/nginx/sbin/nginx -s reload

4)测试

使用127.0.0.1来个访问

[iyunv@mysql ~]# curl -x127.0.0.1:80 http://www.hello.com/1.jpg
<html>
<head><title>403 Forbidden</title></head>  #提示被禁止
<body
bgcolor="white">
<center><h1>403
Forbidden</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
[iyunv@mysql ~]# curl -x192.168.122.10:80 http://www.hello.com/1.jpg-I
HTTP/1.1 200 OK   #访问是OK的

3、某个目录下限制IP访问,这个的作用主要就是是针对一些特定的目录来限制访问,依然以default2.conf虚拟主机配置为例

      只允许192.168.61.0/24这个网段对w目录访问,其他的全部拒绝,配置文件位置:/usr/local/nginx/conf/vhosts/default2.conf

如图:

QQ截图20150630083332.png

规则写法如下:   

location /w/ {

        allow 192.168.61.0/24;   #这里的IP段就是允许的IP段

        deny all;

        location ~ \.php$ {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

        }

    }

一定要加上location php,不然是不会去解析php的


退出保存

检查配置文件

[iyunv@mysql w]# /usr/local/nginx/sbin/nginx -t

重启nginx

/etc/init.d/nginx restart

4、在nginx的配置文件nginx.conf中加入:

include deny.ip;


重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload就可以生效了。


deny.ip 的格式中也可以用deny all;

如果你想实现这样的应用,除了几个IP外,其他全部拒绝,

那需要你在deny.ip 中这样写

allow 1.1.1.1;

allow 1.1.1.2;

deny all;


5、有时候会根据目录来限制php解析,这里依然还是以/usr/local/nginx/conf/vhosts/default2.conf 虚拟主机为例的


location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$   #括号里面的表示或者的意思,只要是括号里面的,不管哪一个都禁止

{

        deny all;

}


这个的意思就是说访问这些目录后的php全部不解析


添加在这个位置,如下图:

QQ截图20150630083352.png

退出保存


检查配置文件

/usr/local/nginx/sbin/nginx -t


重启nginx

/etc/init.d/nginx restart

测试访问www.hello.com后面带image目录下后缀为.php的文件时,提示拒绝访问

[iyunv@mysql ~]# curl -x192.168.21.97:80 http://www.hello.com/wer/image/23.php

<html>

<head><title>403 Forbidden</title></head>

<body bgcolor="white">

<center><h1>403 Forbidden</h1></center>

<hr><center>nginx/1.6.2</center>

</body>

</html>



6、使用 user_agent 控制客户端访问 ,就是可以限制某些浏览器来访问,只需要将浏览器的标示写入到规则里面就可以,都是在nginx虚拟主机配置文件中设置的

代码如下:

if ($http_user_agent ~ 'bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315'){

            return 403;

    }


    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

    }



二、nginx的rewrite应用

      1、rewrite作用

           重写URL,或者修改字符串。需要注意的是重写URL只对相对路径有效,如果想要对主机名,要使用if语句

     2、伪静态rewrite规则,一下这规则可以作为一个标准的模板,需要的时候直接复制粘贴就可以,当然这个也是写在虚nginx虚拟主机的配置文件中的


伪静态rewrite规则

    rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;

    rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;

    rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;

    rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;

    rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;

    rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81790-1-1.html 上篇帖子: nginx 防止其它域名绑定自己的ip 下篇帖子: nginx启动脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表