nginx怎么设置不可访问一个目录(Nginx如何禁止访问特定后缀文件的配置方法)
要禁止访问特定后缀名的文件,可以使用 Nginx 的 location 指令以及 deny 指令。以下是一个基本的示例:
location ~ \.php$ {
deny all;
}
上面的配置将会拒绝所有以 .php 结尾的请求。在此配置中,~ 表示使用正则表达式匹配请求 URI,\. 匹配实际的点字符,php 匹配文件扩展名。deny all 指令表示拒绝所有请求。
如果你想禁止其他类型的文件,只需将 .php 替换为你想要禁止的文件类型即可。如果你想禁止多个文件类型,可以在 location 指令中使用正则表达式或多个 location 指令。例如:
location ~* \.(php|jsp|asp)$ {
deny all;
}
禁止访问整个目录或目录下文件
#禁止访问目录
location ^~ /test/ {
deny all;
}
#禁止访问目录下文件
location ^~ /test {
deny all;
}
- 隐藏不必要的信息
由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。因此,需要对Nginx的不必要信息做隐藏加固,具体配置方法:
- 隐藏服务器版本号:默认情况下,Nginx 会在响应头中发送自身的版本号,可以通过在 Nginx 配置文件中加入 server_tokens off; 来关闭这个功能,从而隐藏服务器版本号。
- 隐藏操作系统信息:如果你希望隐藏服务器操作系统的信息,可以在 Nginx 配置文件中使用 Server_tokens 指令来指定一个空字符串,例如 server_tokens ""。
- 隐藏错误页面中的 Nginx 版本号:Nginx 默认的错误页面中会包含 Nginx 的版本号,可以通过在 error_page 指令中加入 proxy_hide_header Server; 来隐藏这个信息。
- 隐藏 X-Powered-By 头部信息:有些应用程序会在 HTTP 响应头中添加 X-Powered-By 头部信息,用于标识应用程序的类型和版本。如果你希望隐藏这个信息,可以在 Nginx 配置文件中加入以下指令:
proxy_set_header X-Powered-By "";
这样可以把 X-Powered-By 头部信息设置为空字符串,从而隐藏应用程序的类型和版本信息。
- 禁用非必要的方法
常见的HTTP请求处理有 GET、POST 两种请求方法,而 HTTP/1 协议还规定了 UPDATE、DELETE、TRACE等 方法用于请求处理和网络诊断,这也可能会暴露一些Server信息。因此,针对 GET、POST 以及 HEAD 之外的请求,具体配置方法如下:
- 使用 Nginx 内置的 limit_except 指令:可以使用 limit_except 指令来限制允许的 HTTP 方法,例如:
location / {
limit_except GET POST {
deny all;
}
}
上述配置将允许 GET 和 POST 方法,而禁止其他所有方法(如 PUT、DELETE 等)。
2.使用 Nginx 模块的配置指令:有些 Nginx 模块(如 ngx_http_dav_module、ngx_http_webdav_module 等)提供了专门的配置指令来限制允许的 HTTP 方法。例如,可以使用 dav_methods 指令来限制 WebDAV 的 HTTP 方法,例如:
location / {
dav_methods PUT DELETE MKCOL;
...
}
上述配置将仅允许 PUT、DELETE 和 MKCOL 方法。
3.使用第三方模块:有一些第三方模块(如 ngx_http_security_module)提供了额外的安全功能,其中包括限制允许的 HTTP 方法。这些模块可以通过安装插件来启用。
需要注意的是,禁用某些 HTTP 方法可能会影响应用程序的正常运行,因此需要根据实际情况进行权衡和调整。
- 合理配置响应头
合理的配置响应头可以提高网站的安全性和性能。以下是一些建议:
- 禁用不必要的 HTTP 方法,例如 PUT 和 DELETE。这可以通过在 Nginx 配置文件中使用 limit_except 指令来实现。
- 配置安全的跨域资源共享 (CORS) 头。可以使用 Nginx 的 add_header 指令来添加这些头。
- 配置 Content Security Policy (CSP) 头。这将限制页面加载的资源,并帮助防止跨站点脚本攻击 (XSS)。Nginx 也可以使用 add_header 指令来添加 CSP 头。
- 配置 Strict-Transport-Security (STS) 头。这将告诉浏览器只使用 HTTPS 连接访问站点,从而提高安全性。
- 禁用或限制特定类型的文件,例如源代码文件。可以使用 Nginx 的 location 指令来匹配这些文件,并配置相应的响应头。
- 配置缓存相关的响应头,例如 Cache-Control 和 Expires。这将帮助浏览器缓存页面内容,从而提高网站性能。
- 配置安全的加密套件和协议,例如 TLS 1.3,并禁用不安全的协议和加密套件。
近年来爆出的一些安全漏洞如下:
漏洞编号 |
漏洞描述 |
影响版本 |
CVE-2022-41741 |
Memory corruption in the ngx_http_mp4_module |
Not vulnerable: 1.23.2 , 1.22.1 Vulnerable: 1.1.3-1.23.1, 1.0.7-1.0.15 |
CVE-2022-41742 |
Memory disclosure in the ngx_http_mp4_module |
Not vulnerable: 1.23.2 , 1.22.1 Vulnerable: 1.1.3-1.23.1, 1.0.7-1.0.15 |
CVE-2021-23017 |
1-byte memory overwrite in resolver |
Not vulnerable: 1.21.0 , 1.20.1 Vulnerable: 0.6.18-1.20.0 |
CVE-2019-9511 |
Excessive CPU usage in HTTP/2 with small window updates |
Not vulnerable: 1.17.3 , 1.16.1 Vulnerable: 1.9.5-1.17.2 |
以上漏洞都已经发布了相应的安全补丁,建议管理员及时更新 Nginx 以防止被攻击。同时,管理员也应该采取其他安全措施,例如配置适当的访问控制、限制不必要的服务和端口等,以提高服务器的安全性。
Nginx 市场份额全球第一Netcraft 发布了 2021 年 10 月份的全球 Web 服务器调查报告。从全球网站市场份额来看,Nginx 尽管比上月下降 0.59 %,仍以 4.12 亿的总数遥遥领先其它竞争对手。其中 Apache 以 2.9 亿位居第二,OpenResty、Cloudflare分别位列第三、第四。
来自NETCRAFT
来自NETCRAFT
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com