nginx访问控制、rewrite应用

nginx访问控制、rewrite应用

一、访问控制

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

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

规则如下:

allow 127.0.0.1;

allow 192.168.21.97;

deny all;

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

退出保存

1)检查配置文件

2)重置配置文件

3)测试

允许ip测试

[[email protected] ~]# 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地址访问

规则如下:

deny 127.0.0.1;

allow all;

1)保存退出

2)检查配置文件

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

3)重置配置文件

[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload

4)测试

使用127.0.0.1来个访问

[[email protected] ~]# 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>

[[email protected] ~]# 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

如图:

规则写法如下:

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的

退出保存

检查配置文件

[[email protected] 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全部不解析

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

退出保存

检查配置文件

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

重启nginx

/etc/init.d/nginx restart

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

[[email protected] ~]# 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;

参考文档    :

Rewrite设置及示例 http://www.lishiming.net/thread-239-1-1.html

nginx $document_uri 参数使用 http://www.lishiming.net/thread-993-1-1.html

nginx的301与302如何配置 http://www.lishiming.net/thread-4840-1-1.html

nginx rewrite不支持if 嵌套也不支持逻辑或和逻辑并  http://www.lishiming.net/thread-4842-1-1.html

时间: 2024-10-26 01:36:19

nginx访问控制、rewrite应用的相关文章

nginx访问控制、rewrite应用、代理设置

 nginx访问控制.rewrite应用.代理设置 一.访问控制 在这里依然还是以default2.conf虚拟主机为例,配置文件位置default2.conf 1.允许某个ip访问 ,需要在default2.conf配置配文件中添加,具体如下图: 规则如下: allow 127.0.0.1; allow 192.168.21.97; deny all; 只允许127.0.0.1和192.168.21.97来访问,其他的全部拒绝 退出保存 1)检查配置文件 2)重置配置文件 3)测试 允许ip测

Nginx 访问控制&屏蔽指定 user_agent

禁止非法恶意访问的IP [[email protected] ~]# vim /usr/local/nginx/conf/vhosts/linux.conf location ~ .*admin\.php$ { allow 127.0.0.1; deny all; #auth_basic "auth"; #auth_basic_user_file /usr/local/nginx/conf/.htpasswd; include fastcgi_params; fastcgi_pass

nginx 配置rewrite 笔记

nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ^~ /public/ { root /data/wwwroot/a.php.abc.cc; } location ^~ /public/ 表示匹配以 "/public/" 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出. location / { root /data/ww

Nginx中 Rewrite学习笔记

路由重写是Web服务器中的一个很重要的基本功能.通过路由重写,可以结构化URL,更具语义化(对SEO有益).另外,分享出去的URL可能会因程序路由变动而导致URL失效,而路由的重写可以很好的解决这类问题. 适当的使用Rewrite功能,可以更我们带来很多的好处.Nginx中Rewrite的功能是基于perl语言兼容的正则表达式,所以在编译安装nginx之前,需要安装PREC库.Nginx中Rewrite功能实现是基于ngx_http_rewrite_module,所以确保安装了此模块. Rewr

The server of Nginx(二)——Nginx访问控制和虚拟主机

一.Nginx访问控制 (1)基于授权的访问控制 Nginx于Apache一样,可以实现基于用户授权的访问控制,当客户端要访问相应网站或者目录时要求输入用户名密码才能正常访问,配置步骤与Apache基本一致 第一步:生成用户密码认证文件,使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与之前讲解Apache认证时一样 ~]#htpasswd -c /usr/local/nginx/passwd.db test #回车后会让输入两次密码 修改

Nginx的Rewrite规则与实例

通过Rewrite规则可以实现规范的URL.根据变量来做URL转向及选择配置,用好Rewrite有时起到事半功倍的效果. 语法 Nginx的Rewrite相比Apache的要好理解很多,主要使用指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令. rewrite 语法: rewrite regex replacement [flag]; 默认值: — 上下文: server, location, if 如果指定的正则表达式能匹配URI,此URI将被r

nginx 配置rewrite

先说自己的情况,目前富乔使用的是lnmp一键包,解决步骤如下: 1.打开/usr/local/nginx/conf/nginx.conf   文件,在server段中,access_log句子前加入以下代码 location /ck/cashier/ { if (!-e $request_filename){ rewrite ^/ck/cashier/(.*)$ /ck/cashier/index.php?s=/$1 last; } } 其中/ck/cashier/  为二级目录,可根据自己的项

Nginx的Rewrite设置及示例

下面我介绍一下Nginx的Rewrite模块设置及Wordpress和Discuz的示例.Nginx的Rewrite规则比Apache的简单灵活多了,从下面介绍可见一斑. 首先,Nginx可以用if进行条件匹配,语法规则类似C,举例如下: if ($http_user_agent ~ MSIE) {rewrite  ^(.*)$  /msie/$1  break;}1.正则表达式匹配,其中: ~  为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

Nginx防盗链 1.[[email protected] test.com]# vi /usr/local/nginx/conf/vhost/test.com.conf #+表示1或者多个,+前面的字符 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names  *.test.com ; #定