Nginx 位置不支持 php 文件

Nginx 位置不支持 php 文件

你好,我希望有人能帮助我,因为我尝试了所有可能的配置。我在网上搜索了很多,有很多关于如何使用位置块来阻止某人访问 php 文件的变体,但都不起作用……最后我找到了这个:

server {

server_name mywebsite.com   www.mywebsite.com;


access_log /var/log/nginx/mywebsite.com.access.log rt_cache;
error_log /var/log/nginx/mywebsite.com.error.log;


root /var/www/mywebsite.com/htdocs;



index index.php index.html index.htm;


include common/wpfc-php7.conf;

include common/wpcommon-php7.conf;
include common/locations-php7.conf;
include /var/www/mywebsite.com/conf/nginx/*.conf;

limit_req zone=one burst=8;
limit_conn two 2;

    location ~ (.php|.aspx|.asp|myadmin|wp-includes|wp-content) {
            return 301;
    }

    location ~ /(wp-admin|wp-login) {
            allow my.ip;
            limit_req zone=one burst=50;
            deny all;
    }
    location = /xmlrpc.php {
            deny all;
    }

}

现在此代码可以正常工作。如果我尝试访问任何文件夹上的 aspx、asp,我都会得到 301;如果我尝试访问 wp-includes、wp-content 中的任何内容,我都会得到 301;但是,如果我尝试访问 php,我就会得到 404。我做错了什么?

答案1

如果你想捕获所有带有 、 等扩展名的文件,.php你可以尝试将正则表达式行添加到你的位置。请参阅示例.asp.aspx((.*).php|(.*).aspx|(.*).asp|myadmin|wp-includes|wp-content)regex101.com

所以你的位置应该是这样的:

location ~ ((.*).php|(.*).aspx|(.*).asp|myadmin|wp-includes|wp-content) {
    return 301;
}

检查代码的另一个地方是

https://nginx.viraptor.info/完全条件

server {
 listen       80;
 server_name  example.com;

 location ~ ((.*).php|(.*).aspx|(.*).asp|myadmin|wp-includes|wp-content) {
   return 301;
 }
}

并测试了网址http://example.com/something.php

在此处输入图片描述

相关内容