Nginx配置禁止访问某个目录或文件的方法和示例

 更新时间:2025年11月25日 09:15:45   作者:网硕互联的小客服  
在 Nginx 中,可以通过配置 访问控制规则 来禁止访问某个目录或文件,以下是详细的配置方法和示例,帮助你快速实现禁止访问的需求,需要的朋友可以参考下

1. 禁止访问某个目录

如果需要禁止用户访问特定目录(例如 /uploads/private),可以通过配置 Nginx 的 location 指令实现。

示例配置:禁止访问某个目录

nginx

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问 /uploads/private 目录
    location /uploads/private/ {
        deny all; # 禁止所有IP访问
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

  1. location /uploads/private/
    • 匹配 /uploads/private 目录及其子目录中的所有文件。
  2. deny all
    • 禁止所有IP访问该目录。
  3. try_files $uri $uri/ =404;
    • 确保其他资源正常访问。

2. 禁止访问某个文件

如果需要禁止访问特定文件类型或某些敏感文件(例如 .env 文件或 config.php),可以通过匹配文件名或文件类型来实现。

示例配置:禁止访问特定文件

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问单个文件,例如 .env
    location ~ /\.env {
        deny all; # 禁止访问 .env 文件
    }
 
    # 禁止访问 config.php 文件
    location ~ /config\.php$ {
        deny all; # 禁止访问 config.php
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

location ~ /\.env

  • 匹配所有以 .env 开头的文件(正则匹配)。

location ~ /config\.php$

  • 匹配 config.php 文件,$ 表示精确匹配文件名结尾。

deny all

  • 禁止所有IP访问这些文件。

3. 禁止访问多个文件类型

如果需要禁止访问某类文件(例如 .log 文件或备份文件 .bak),可以使用正则表达式匹配多个文件类型。

示例配置:禁止访问多种文件类型

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问 .log 和 .bak 文件
    location ~ \.(log|bak)$ {
        deny all; # 禁止访问所有 .log 和 .bak 文件
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

  • \.(log|bak)$
    • 使用正则匹配以 .log.bak 结尾的文件。
  • deny all
    • 禁止所有IP访问这些文件。

4. 禁止访问敏感文件夹及文件并返回403页面

如果想在用户尝试访问被禁止的目录或文件时,返回标准的 403 Forbidden 页面,可以如下配置:

示例配置:返回403页面

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问 /admin 和 .env 文件
    location /admin/ {
        deny all;
        error_page 403 /403.html; # 指定403错误页面
    }
 
    location ~ /\.env {
        deny all;
        error_page 403 /403.html;
    }
 
    # 自定义403页面
    location = /403.html {
        root /var/www/html;
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

deny all;

  • 禁止访问 /admin/ 目录及 .env 文件。

error_page 403 /403.html;

  • 当用户访问被禁止的资源时,显示自定义的 403.html 页面。

location = /403.html

  • 指定自定义的 403.html 文件路径。

5. 仅允许特定IP访问目录或文件

如果需要禁止所有用户访问某个目录或文件,但允许特定IP访问,可以通过 allowdeny 指令实现。

示例配置:仅允许特定IP访问

nginx

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问 /admin 目录,仅允许特定IP访问
    location /admin/ {
        allow 192.168.1.100; # 允许此IP访问
        deny all;            # 禁止其他所有IP访问
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

  1. allow 192.168.1.100;
    • 允许IP地址为 192.168.1.100 的用户访问。
  2. deny all;
    • 禁止除允许IP以外的所有用户访问。

6. 禁止访问隐藏文件(以.开头的文件)

为防止用户访问隐藏文件(如 .git.htaccess),可以配置禁止规则。

示例配置:禁止访问隐藏文件

server {
    listen 80;
    server_name example.com;
 
    root /var/www/html;
 
    # 禁止访问以 . 开头的隐藏文件
    location ~ /\. {
        deny all;
        access_log off; # 关闭访问日志
        log_not_found off; # 不记录404日志
    }
 
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

  • location ~ /\.
    • 匹配所有以 . 开头的文件(如 .git.env)。
  • access_log off; log_not_found off;
    • 关闭访问日志和404日志,减少日志文件的体积。

7. 验证配置并重启Nginx

验证Nginx配置是否正确

nginx -t 

重启Nginx服务

# 如果一切正常,重启Nginx服务
systemctl reload nginx

总结

通过 Nginx 的 location 指令和 deny/allow 配置,你可以灵活地实现以下功能:

  1. 禁止访问特定目录
  2. 禁止访问某个文件或文件类型
  3. 返回自定义403页面
  4. 仅允许特定IP访问敏感资源
  5. 防止访问隐藏文件(如 .git.env

根据实际需求选择合适的配置,并确保对服务器的安全性和性能进行持续优化。

以上就是Nginx配置禁止访问某个目录或文件的方法和示例的详细内容,更多关于Nginx禁止访问某个目录或文件的资料请关注脚本之家其它相关文章!

相关文章

  • nginx配置客户端保存cookie的实现

    nginx配置客户端保存cookie的实现

    本文主要介绍了nginx配置客户端保存cookie的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx 基本入门教程

    nginx 基本入门教程

    本篇文章主要介绍了详解nginx 基本入门,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Nginx路径重写方式

    Nginx路径重写方式

    这篇文章主要介绍了Nginx路径重写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx报Too Many Open Files总结

    Nginx报Too Many Open Files总结

    本文提供了解决Nginx服务器出现Too many open files错误的方法,包括检查和调整文件句柄限制、修改系统配置文件及nginx配置等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • Nginx重定向后请求参数丢失的原因分析及解决方案

    Nginx重定向后请求参数丢失的原因分析及解决方案

    在日常开发和运维中,我们经常会遇到需要使用 Nginx 进行反向代理的场景,但在配置 proxy_pass 时,有时候可能会遇到请求参数丢失的问题,在这篇文章中,我们将会详细探讨这个问题并给出几种解决方案,需要的朋友可以参考下
    2023-11-11
  • Nginx中split_clients模块的使用

    Nginx中split_clients模块的使用

    split_clients模块可以轻松地实现A/B测试,本文主要介绍了Nginx中split_clients模块的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • PHP的Symfony和CodeIgniter框架的Nginx重写规则配置

    PHP的Symfony和CodeIgniter框架的Nginx重写规则配置

    这篇文章主要介绍了PHP的Symfony和CodeIgniter框架的Nginx重写规则配置,文中截取配置中关键的一些rewrite写法进行讲解,需要的朋友可以参考下
    2016-01-01
  • nginx+lua+redis 灰度发布实现方案

    nginx+lua+redis 灰度发布实现方案

    在微服务化进程中,利用nginx+lua+redis实现灰度发布至关重要,,通过nginx+lua反向代理,根据客户端ip进行路由控制,配合redis存储允许访问微服务的ip地址,可以有效地进行用户分流,感兴趣的可以了解一下
    2024-10-10
  • Nginx负载均衡通用方案详解

    Nginx负载均衡通用方案详解

    本文介绍Nginx负载均衡的最优配置方案,强调了因应不同场景(如视频会议和商城)需求差异的重要性,提出通过模块化配置和核心组件组合,实现一次配置多场景覆盖,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • Nginx设置404错误页面跳转的几种方法总结

    Nginx设置404错误页面跳转的几种方法总结

    一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有些相关配置方法,下面小编给大家带来了Nginx实现404页面的几种方法,感兴趣的朋友一起看看吧
    2024-03-03

最新评论