如何在EC2的Nginx中为目录及其内容编写访问限制重写规则
禁止指定目录直接访问配置方案

本文以拦截上图示例的ajax目录及其下所有内容直接访问、返回401未授权错误为例,给出主流Web服务器的配置规则:
Nginx 配置
- 找到对应站点的Nginx配置文件(通常存放在
/etc/nginx/conf.d/目录下对应站点的.conf文件,或是nginx.conf的server块内),添加如下规则:
location ^~ /ajax/ { return 401; }
- 修改完成后执行
nginx -s reload重载配置即可生效。
说明:^~标识匹配所有以/ajax/开头的路径,优先级高于正则匹配,可以确保该目录下的所有请求都会被拦截。
Apache 配置
共有两种实现方式:
方式1:修改站点主配置(性能更优,推荐)
- 找到对应站点的VirtualHost配置段,添加如下内容:
<Directory /path/to/your/site/ajax> RewriteEngine On RewriteRule ^ - [R=401,L] </Directory>
注意将/path/to/your/site/ajax替换为你的站点ajax目录对应的实际绝对路径。
- 修改完成后执行
systemctl reload httpd(CentOS/RHEL系列)或systemctl reload apache2(Debian/Ubuntu系列)重载配置即可生效。
方式2:目录下添加.htaccess文件
如果没有权限修改服务主配置,可以直接在ajax目录下新建.htaccess文件,写入如下内容:
RewriteEngine On RewriteRule ^.*$ - [R=401,L]
注意需要确保站点主配置中已经开启AllowOverride All,否则.htaccess规则不会生效。
IIS 配置
- 在站点根目录的
web.config文件的<system.webServer>节点下添加如下规则:
<rewrite> <rules> <rule name="BlockAjaxDirectory" stopProcessing="true"> <match url="^ajax/(.*)$" /> <action type="CustomResponse" statusCode="401" statusReason="Unauthorized" statusDescription="You are not authorized to access this resource." /> </rule> </rules> </rewrite>
- 保存文件后配置自动生效,无需重启服务。
内容的提问来源于stack exchange,提问作者pilotman
相关产品推荐
相关产品推荐

