lnmp去掉nginx上传目录的PHP执行权限
LNMP有一个缺点就是目录权限设置上不如Apache,有时候网站程序存在上传漏洞或类似pathinfo的漏洞从而导致被上传了php木马,而给网站和服务器带来比较大危险。建议将网站目录的PHP权限去掉,当访问上传目录下的php文件时就会返回403错误。下面VPS侦探详细介绍如何把lnmp环境下去掉指定目录的PHP执行权限。
首先要编辑nginx的虚拟主机配置,在fastcgi的location语句的前面按下面的内容添加:
1、单个目录去掉PHP执行权限
location ~ /attachments/.*\.(php|php5)?$ {
deny all;
}
deny all;
}
将attachments目录的PHP执行权限去掉。
2、多个目录去掉PHP执行权限
location ~ /(attachments|upload)/.*\.(php|php5)?$ {
deny all;
}
deny all;
}
将attachments、upload这二个目录的PHP执行权限去掉。
附上一个完整的虚拟主机的例子供参考:
server
{
listen 80;
server_name bbs.vpser.net;
index index.html index.htm index.php;
root /home/wwwroot/bbs.vpser.net;include discuz.conf;
location ~ /(attachments|upload)/.*\.(php|php5)?$ {
deny all;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}access_log off;
}
{
listen 80;
server_name bbs.vpser.net;
index index.html index.htm index.php;
root /home/wwwroot/bbs.vpser.net;include discuz.conf;
location ~ /(attachments|upload)/.*\.(php|php5)?$ {
deny all;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}access_log off;
}
添加完执行:/usr/local/nginx/sbin/nginx -t测试配置文件,执行:/usr/local/nginx/sbin/nginx -s reload 载入配置文件使其生效。
如有问题欢迎在本文下方留言或到VPS论坛交流反馈。
原创文章,谢绝转载!
>>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/security/lnmp-remove-nginx-php-execute.html
需要从根目录开始加上目录的路径
location ~ /(attachments|upload)/
如果目录不是在网站根目录下,需要写全路径吗?
修改nginx配置文件后需要reload或restart nginx才能生效
http跳到https了的话只在https的虚拟主机上设置就可以
不成功建议论坛贴配置代码看一下
你好,为什么我关闭不了PHP的权限?我是在VHOST网站文件里改的,是不是要到NGINX的配置文件里更改才能生效 ,明明检测代码是对的,有些主题能成功有些不能,一定要写到80服务端吗,443可以不,我都是HTTPS跳转了, 我的修改文件跟你的有不同,首先80那里就没有fastcgi.也不知道对应文件的什么位置修改才能正确。
BTW:为什么我媒体库上传了一张照片,但是现实是不同尺寸的上传了5张, 这个请问知道吗。
@lige9, LNMPA下的设置和LNMP是一样的,因为Nginx是前端,禁用执行权限的代码要在转发php的前面。
我安装的是lnmpa,该怎么去掉上传目录的PHP执行权限
@dong4567, 你看看图片链接是什么,如果是通过php显示的图片,并且该文件在禁止执行的目录的话会无法显示。
您好
我这样设置后,站点的图片都无法显示,不懂是什么问题啊?3Q