[转帖]Nginx 禁止直接访问目录或文件的操作方法

nginx,禁止,直接,访问,目录,文件,操作方法 · 浏览次数 : 0

小编点评

**Nginx 禁止直接访问目录或文件** **方法 1:使用 autoindex 配置** ```nginx server { listen 80; server_name example.com; location / { autoindex on; autoindex_localtime on; alias /home/wwwroot/test/; } } ``` * `autoindex on;`开启目录浏览功能。 * `autoindex_localtime on;`显示文件的大小单位为字节。 * `alias /home/wwwroot/test/;`将所有请求转发到 `/home/wwwroot/test/`目录中。 **方法 2:使用 location 配置** ```nginx server { listen 80; server_name example.com; location ~ \\.(ini|conf|txt)$ { deny all; } location ^~ /test/ { deny all; } location ~* ^/(directory1|directory2)/.*\\.(php)$ { deny all; } } ``` * `location ~ \\.(ini|conf|txt)$ {`匹配所有以 .ini、.conf 或 .txt结尾的文件。 * `deny all;`拒绝所有匹配的请求。 **方法 3:使用正则表达式** ```nginx server { listen 80; server_name example.com; location /directory { deny all; } location ~* ^/(directory1|directory2)/.*\.(php)$ { deny all; } } ``` * `location /directory {`匹配所有以 `/directory1` 或 `/directory2`结尾的目录路径。 * `deny all;`拒绝所有匹配的请求。 **方法 4:使用精确匹配** ```nginx server { listen 80; server_name example.com; location /directory { deny all; } location ~* ^/(directory1|directory2)/.*\.(php)$ { deny all; } } ``` * `location /directory {`匹配所有以 `/directory1` 或 `/directory2`结尾的目录路径。 * `deny all;`拒绝所有匹配的请求。 **注意:** * 以上方法都将阻止直接访问目录或文件。 * 这些方法的优先级从高到低,因此,方法 1 和方法 2 相同。 * 方法 4 使用正则表达式,更灵活且可扩展。

正文

https://www.jb51.net/article/266355.htm

 

前言

Nginx 默认是不允许列出整个目录的。

如需此功能,打开 nginx.conf 文件或你要启用目录浏览虚拟主机的配置文件,在 location server 或 http 段中加入

1
autoindex on;

另外两个参数最好也加上去:

1
autoindex_exact_size off;

默认为 on,显示出文件的确切大小,单位是 bytes。

改为 off 后,显示出文件的大概大小,单位是 KB 或者 MB 或者 GB

1
autoindex_localtime on;

默认为 off ,显示的文件时间为 GMT 时间。

改为 on 后,显示的文件时间为文件的服务器时间。

第一种:autoindex 配置

一级目录或整个虚拟主机开启目录流量

在 nginx.conf 文件 中 server 段添加

1
2
3
4
location / {
  autoindex on;
  autoindex_localtime on; #之类的参数写这里
}

单独目录开启目录流量

二级目录开启目录流量

1
2
3
location /down/ {
  autoindex on;
}

虚拟目录开启目录流量

1
2
3
4
location /down/ {
  alias /home/wwwroot/test/;
  autoindex on;
}

第二种:nginx location 配置

一、禁止访问某些后缀文件

1
2
3
location ~ \.(ini|conf|txt)$ {
    deny all;
}

二、禁止访问目录或目录下文件

1
2
3
4
#禁止访问目录
location ^~ /test/ {
    deny all;
}
1
2
3
4
#禁止访问目录下文件
location ^~ /test {
    deny all;
}

三、禁止访问某个目录下的指定文件后缀文件

1
2
3
4
5
6
# 禁止访问某个目录下的 php 后缀文件
location /directory {
    location ~ .*\.(php)?$ {
    deny all;
    }
}
1
2
3
4
# 禁止访问多个目录下的 php 后缀文件
location ~* ^/(directory1|directory2)/.*\.(php)${
    deny all;
}

四、nginx location 匹配相关

  • = 表示精确匹配
  • ^~ 表示 uri 以某个字符串开头
  • ~ 正则匹配(区分大小写)
  • ~* 正则匹配(不区分大小写) !和!*分别为区分大小写不匹配及不区分大小写不匹配的正则
  • / 任何请求都会匹配
  • 匹配优先级: = > ^~ > /

五、nginx 配置图片直接下载不打开

1
2
3
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    add_header Content-Disposition attachment;                  
}

到此这篇关于Nginx 禁止直接访问目录或文件的方法的文章就介绍到这了,更多相关nginx 禁止直接访问目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

与[转帖]Nginx 禁止直接访问目录或文件的操作方法相似的内容:

[转帖]Nginx 禁止直接访问目录或文件的操作方法

https://www.jb51.net/article/266355.htm 前言 Nginx 默认是不允许列出整个目录的。 如需此功能,打开 nginx.conf 文件或你要启用目录浏览虚拟主机的配置文件,在 location server 或 http 段中加入 1 autoindex on;

[转帖]Nginx禁止ip访问或非法域名访问

https://www.jb51.net/article/243661.htm 这篇文章主要介绍了Nginx禁止ip访问或非法域名访问,需要的朋友可以参考下 在生产环境中,为了网站的安全访问,需要Nginx禁止一些非法访问,如恶意域名解析,直接使用IP访问网站。下面记录一些常用的配置示例: 1)禁止

[转帖]@nginx多server及使用优化(php)

文章目录​ ​一、nginx多server优先级​​​ ​二、禁止IP访问页面​​​ ​三、nginx的包含include​​​ ​四、nginx 路径的alias和root​​​ ​1.配置​​​ ​2.总结​​​ ​五、nginx的try_files​​​ ​1.配置try_files​​​ ​

[转帖]Nginx(四)负载均衡

一 nginx目录的说明 1 nginx/ 3 |-- client_body_temp 4 |-- conf #这是Nginx所有配置文件的目录,极其重要 5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件' 6 | |-- fastcgi.conf.default #f

[转帖]nginx限速

https://www.cnblogs.com/fengzi7314/p/16541440.html 第一步,先创建限制的规则,我这里直接在nginx默认的配置文件目录下配置,如果想自定义,需要在主配置文件添加include xx/xxx/xxx/*.conf配置 [root@node5 nginx

[转帖]Nginx支持WebSocket反向代理

https://www.cnblogs.com/zhengchunyuan/p/12923692.html WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类

[转帖]Nginx内置变量以及日志格式变量参数详解

补充 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$reques

[转帖]nginx proxy_pass keepalive

Syntax: keepalive connections; Default: — Context: upstream This directive appeared in version 1.1.4. Activates the cache for connections to upstream

[转帖]Nginx超时timeout 设置

Nginx 超时配置,连接时间过长直接关闭连接,显示timeout http { #每个 TCP 连接最多可以保持多长时间 keepalive_timeout 60; #客户端向服务端发送一个完整的 request header client_header_timeout 10; #客户端发送服务端

[转帖]nginx反向代理时保持长连接

https://www.cnblogs.com/liufarui/p/11075630.html ·【场景描述】 HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。 如果我们使用了nginx去作为反