Nginx多站点如何正确限制目录php执行权限配置

今天看了朋友一台服务器里上传目录是这么配置的:

[root@Centos62 ~]#chomd -R -x upload

把我吓坏了,我说:“你平时都是这么干的吗?”

朋友:“对啊!把x执行权限取消了,你放什么木马进来,都没办法执行啊!"

0×01 到底哪里不对

分析一下 到底哪里不对,我搜索引擎了一下:linux chmod 文件夹

结果得到的信息是:linux中,chmod的x属性,针对文件跟针对文件夹是不一样的。

这里有个表 给大家看看

由上表(截图来自兄弟连的linux视频)我们可以得出:在linux中chmod命令中的rwx属性,针对文件夹跟针对目录是不一样的。这里x属性针对目录,是否可以进入目录。So……如果设置了这个,/upload/shell.php当然是无法运行的。

新技能get√

但是 这显然是不对滴!因为禁止进入目录,那么里面的图片等文件都是不可访问,无法显示的。这显然是我们不想要的结果,这样做是不对的。

0×02 茫茫搜索引擎 该去哪里找

当然了,我肯定是要用到搜索引擎的。搜了一下:nginx 限制php执行权限

发现网上的方法都是雷同(因为站长都是抄,草!无良),抄也要抄完整的啊!

都TM是半截,后来找到了原版,是VPS侦探出的文章:

点击进入传送门 看原版

对于我这种不是天天用linux的人 这个设置 太TMD含糊其辞了。

于是就开始搜索引擎各种资料、整理、测试。

0×03 正确的技能get√

以下是正确的技能 每一步 都是真实服务器测试的

环境:lnmp 1.1版本|语言php|服务器里面有三个网站  这里描述为

www.baidu.com|www.google.com|www.aliyun.com

我们这里要限制两个不同站点|不同目录文件名的权限

www.baidu.com/ups/
www.google.com/ccav/

(www.aliyun.com 在这里打酱油)

那么 正确的方法 应该是:

#首先 我们得知道 在哪里设置 VPS侦探的文章里面只是说:nginx的虚拟主机配置

#但是 nginx的虚拟主机配置在哪里呢?搜索引擎告诉我在/usr/local/nginx/conf/nginx.conf

#当然了 这是默认的位置 情况仅限于你服务器只有一个站点,并且是默认站点

#我们这里的情况是 三个站点  So……

#正确的位置应该是在
   
[root@Centos62 ~]#cd /usr/local/nginx/conf/vhost

#没错 在这里 vhost这儿

然后你就可以用ls命令或者ll命令查看有没有配置文件了
   
[root@Centos62 ~]#ll

#命令ll执行之后(按回车就行) 你就可以收到如下信息

总用量 12

-rw-r--r-- 1 root root  677 10月 30 8:31 www.baidu.com.conf
-rw-r--r-- 1 root root 1501 10月 30 8:57 www.google.com.conf
-rw-r--r-- 1 root root  828 10月 30 8:16 wx.aliyun.com.conf

#我现在就演示一下  先限制www.baidu.com/ups 文件夹的php执行权限 并且不影响其他格式文件

[root@CentOS62 vhost]#vim www.baidu.com.conf

#用vim编辑器编辑 www.baidu.com.conf 这个文件 编辑器操作命令我就不讲了

server
        {
                listen 80;
                #listen [::]:80;
                server_name www.baidu.com;
                index index.html index.htm index.php default.html default.htm default.php;
                root  /home/www/www.baidu.com;
                include none.conf;
                #error_page   404   /404.html;
                location ~ [^/].php(/|$)
                        {
                                # comment try_files $uri =404; to enable pathinfo
                                try_files $uri =404;
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                fastcgi_index index.php;
                                include fastcgi.conf;
                                #include pathinfo.conf;
                        }
                location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires      30d;
                        }
                location ~ .*.(js|css)?$
                        {
                                expires      12h;
                        }
                access_log  /home/wwwlogs/www.baidu.com.log.log  access;
        }

#没错 上面就是原版的 www.baidu.com.conf文件的内容

#我们只需要在上面添加限制的代码就行了 VPS侦探没提到这些

#我们在  root  /home/www/www.baidu.com; 的下方直接插入下面代码:

 location ~ /(ups)/.*.(php|php5)?$
                       {
                               deny all;
                        }

#意思就是限制根目录下面的ups文件夹的php执行权限

#如果你想限制更多的目录 你可以(ups|upload|avatar) 这样

#插入以上代码之后 保存文件

#然后马上执行

[root@CentOS62 vhost]# /usr/local/nginx/sbin/nginx -t

#然后你会看到如下结果:

#看到了 test is successful 就是说nginx检查你的配置文件 没有错

#你需要启用这个配置 那就重新载入它  命令如下:

[root@CentOS62 vhost]#/usr/local/nginx/sbin/nginx -s reload

#回车运行就可以了 只要返回的不是错误信息 就默认成功了

#www.google.com/ccav 同理也是如此设置

0×04 总结一下

1.找到你要修改的文件

2.编辑它 插入代码

3.保存好 用命令 [root@CentOS62 vhost]# /usr/local/nginx/sbin/nginx -t  检查文件是否有错

4.没错的话 用命令 [root@CentOS62 vhost]#/usr/local/nginx/sbin/nginx -s reload 重新载入文件即可

5.在目录下放几种格式的文件 php jpg png txt 试试看 是否成功 访问.php返回403错误 访问其他文件正常显示 这就对了 否则还是不对。检查一下 是不是哪里代码打错了?

#赶快去找你的目录试试吧 少年!

0×05 正确的写文章

#正确的写文章 应该准确的告诉别人

#哪个文件 在哪里找得到 用什么命令 在哪一行插入

#而不是告诉你 Nginx配置文件|在fastcgi的location前插入

#对于新手 太不知所措了

#在此  感谢VPS侦探的文章 要不然我也不知道怎么设置

时间: 2024-07-30 18:50:41

Nginx多站点如何正确限制目录php执行权限配置的相关文章

apache nginx设置目录无执行权限的方法

apache nginx设置目录无执行权限的方法web服务有iis,apache,nginx,使用操作系统无非是windows or *nux    代码如下 复制代码 location ~ ^/upload/.*.(php教程|php5)$ { deny all; } 来看俩段通常对上传目录设置无权限的列子,配置如下:  代码如下 复制代码 <directory "/var/111cn.net/upload"> <filesmatch ".php"

Windows服务器IIS中设置站点或目录的执行权限

IIS站点属性的"主目录"选项卡下,有一个执行权限的设置.站点或目录的执行权限应该如何设置? IIS中执行权限 IIS中的执行权限有如下三种: 1.无权限 无权限是指不能执行动态脚本程序.说得更明白一点就是像asp.php.asp.net.jsp等均不能执行,只有像html这样的页面可以通过IIS来访问. 2.纯脚本 像ASP.PHP.JSP等服务器端脚本程序需要开启纯脚本权限. 3.纯脚本和应用程序 除了可以执行脚本之外还可以执行可执行文件.你有没有遇到一个网页的后缀是.dll?经常

lnmp取消nginx目录PHP执行权限

  首先要编辑nginx的虚拟主机配置,在fastcgi的location语句的前面按下面的内容添加: 1.单个目录去掉PHP执行权限 location ~ /attachments/.*.(php|php5)?$ { deny all; } 将attachments目录的PHP执行权限去掉. 2.多个目录去掉PHP执行权限 location ~ /(attachments|upload)/.*.(php|php5)?$ { deny all; } 将attachments.upload这二个目

nginx中怎么禁止目录PHP执行权限

LNMP环境下目录权限设置上不如Apache,有时网站程序存在上传漏洞或类似pathinfo的漏洞从而导致被上传了php木马,而给网站和服务器带来比较大危险. 建议将网站目录的PHP权限去掉,当访问上传目录下的php文件时就会返回403错误. 如何把lnmp环境下去掉指定目录的PHP执行权限. 首先,编辑nginx的虚拟主机配置,在fastcgi的location语句的前面添加如下内容: 1.单个目录去掉PHP执行权限  代码如下 复制代码 location ~ /attachments/.*.

nginx设置上传目录无执行权限的方法_nginx

nginx上也很简单,我们使用location..如下: 复制代码 代码如下: location ~ ^/upload/.*\.(php|php5)$ { deny all; } 其中upload换为你要设置的目录名字 这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限

iis与apache取消目录脚本执行权限方法

打开IIS中站点,在站点uploads目录.data目录以及静态html生成目录点击右键,菜单中选择"属性",在目录属性面板选择执行权限为"无"即可.(如图1) (图1)   IIS7也类似于IIS6.0,选择站点对应的目录,data.uploads及静态html文件目录,双击功能试图面板中的"处理程序映射"(如图2) (图2) 在"编辑功能权限--"中,我们直接去除脚本的执行权限即可.(如图3) (图3)   在Apache

IIS目录禁止执行权限

IIS6: IIS7:

nginx上传目录配置,禁止执行权限

如果不让有执行权限最简单的办法  代码如下 复制代码 location ~ ^/upload/.*.(php|php5)$ { deny all; } 上面的方法满足不了我要求,后来找到一个不错的脚本  代码如下 复制代码 server         {                 listen       80;                 server_name xxxx.com;                 index index.html index.htm index.p

nginx或Apache中禁止目录执行权限

经常会把网站的图片文件上传目录设置为只可上传文件但不能执行文件,就是要禁止执行权限. 本节就为大家介绍nginx上传目录的权限配置.禁止执行权限的方法. Nginx禁止目录执行php文件权限 以下配置均在nginx配置的server处添加  代码如下 复制代码 location ~ /attachments/.*.(php|php5)?$ { deny all; } 禁止attachments目录执行php文件权限 2.多个目录  代码如下 复制代码 location ~ /(attachmen