Nginx是当今最流行的Web服务器之一。它为世界上7%的web流量提供服务而且正在以惊人的速度增长。它是个让人惊奇的服务器,我愿意部署它。
下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的。
1. 在配置文件中小心使用"if"。它是重写模块的一部分,不应该在任何地方使用。
“if”声明是重写模块评估指令强制性的部分。换个说法,Nginx的配置一般来说是声明式的。在有些情况下,由于用户的需求,他们试图在一些非重写指令内使用“if”,这导致我们现在遇到的情况。大多数情况下都能正常工作,但…看上面提到的。
看起来唯一正确的解决方案是在非重写的指令内完全禁用“if”。这将更改现有的许多配置,所以还没有完成。
来源: IfIsEvil
2. 将每个~ .php$请求转递给PHP。 我们上周发布了这个流行指令的潜在安全漏洞介绍。即使文件名为hello.php.jpeg它也会匹配~ .php$这个正则而执行文件。
现在有两个解决上述问题的好方法。我觉得确保你不轻易执行任意代码的混合方法很有必要。
- 如果没找到文件时使用try_files和only(在所有的动态执行情况下都应该注意) 将它转递给运行PHP的FCGI进程。
- 确认php.ini文件中cgi.fix_pathinfo设置为0 (cgi.fix_pathinfo=0) 。这样确保PHP检查文件全名(当它在文件结尾没有发现.php它将忽略)
- 修复正则表达式匹配不正确文件的问题。现在正则表达式认为任何文件都包含".php"。在站点后加“if”确保只有正确的文件才能运行。将/location ~ .php$和location ~ ..*/.*.php$都设置为return 403;
3. 禁用autoindex模块。这个可能在你使用的Nginx版本中已经更改了,如果没有的话只需在配置文件的location块中增加autoindex off;声明即可。
4. 禁用服务器上的ssi (服务器端引用)。这个可以通过在location块中添加ssi off; 。
5. 关闭服务器标记。如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息。将server_tokens off;声明添加到Nginx配置文件来解决这个问题。
6. 在配置文件中设置自定义缓存以限制缓冲区溢出攻击的可能性。
- client_body_buffer_size 1K;
- client_header_buffer_size 1k;
- client_max_body_size 1k;
- large_client_header_buffers 2 1k;
7. 将timeout设低来防止DOS攻击。所有这些声明都可以放到主配置文件中。
- client_body_timeout 10;
- client_header_timeout 10;
- keepalive_timeout 5 5;
- send_timeout 10;
8. 限制用户连接数来预防DOS攻击。
- limit_zone slimits $binary_remote_addr 5m;
- limit_conn slimits 5;
9. 试着避免使用HTTP认证。HTTP认证默认使用crypt,它的哈希并不安全。如果你要用的话就用MD5(这也不是个好选择但负载方面比crypt好) 。
10. 保持与最新的Nginx安全更新。
相关推荐
通过在Nginx中正确配置多个域名和协议监听,可以为网站提供稳定、安全、高效的网络服务。在实际应用中,应该结合具体的服务器配置和网络安全策略,来优化Nginx的设置,以达到最佳的性能和安全效果。
在Windows上下载Nginx的安装包,运行安装程序并按照提示进行配置。安装完成后,Nginx的服务会自动启动或需要手动启动。 2. 配置HTTPS: - 生成SSL证书:可以使用OpenSSL工具生成自签名证书,或者购买CA签发的证书...
然而,在某些场景下,出于安全考虑或系统配置需求,我们可能希望让普通用户也能启动Nginx服务器,并且能够使用这些端口。本文将详细介绍如何实现这一目标。 #### 查看Nginx进程 首先,需要确保当前系统上已经安装...
标题 "Nginx 阿里云服务器提示504" 涉及的问题是关于Web服务器Nginx在阿里云环境中遇到了“504 Gateway Time-out”错误。这个错误通常意味着Nginx作为前端代理服务器,未能在预设的时间内从后端应用服务器(如Apache...
2. 下载并解压Winsw:将winsw-1.19.1-bin.exe解压到一个安全的位置,例如`C:\Utils\winsw`。这个目录应该包含`winsw.exe`和`winsw.xml`这两个文件。 3. 配置Winsw:复制`winsw.exe`到Nginx的安装目录,重命名为`...
安全狗linux版是为Linux服务器开发的一款服务器管理软件,全面支持apache和nginx防护。具有DDOS攻击防护、CC攻击防护、Ftp/SSH防暴力破解、SSH远程登录保护、网站漏洞防护、url地址全检测、防盗链、网站特定资源保护...
标题提到的"nginx"文件很可能是一个包含所有必要软件包的压缩文件。在开始安装前,请确保你已经下载了这个压缩文件,并将其解压到一个方便访问的本地目录。这一步通常可以通过命令行工具如`tar`来完成: ```bash ...
在Ubuntu 20.04系统中离线安装Nginx是一个相对复杂的过程,因为通常我们依赖...此外,保持Nginx及其依赖库的更新也很重要,因为安全性和性能的改进通常会随新版本发布。如果可能的话,定期更新到最新稳定版本是有益的。
在Windows操作系统上,安装和使用Nginx相对简单,只需要进行几个基本步骤。下面我们将详细介绍如何在Windows上直接解压Nginx并开始使用。 1. **下载Nginx** 首先,你需要从Nginx官方网站(https://nginx.org/)...
教程提示读者备份默认配置文件,然后根据实际需求修改`/etc/nginx/nginx.conf`。这里涉及的关键配置包括指定Nginx运行用户、设置工作进程数、定义日志文件位置、配置错误页面以及设定网站根目录。此外,教程还提供了...
Nginx 1.17.10 版本是 Nginx 的一个重要稳定版本,它在性能、安全性和功能上都得到了进一步优化。 **1. Nginx 的核心特性** Nginx 的主要特性包括: - 非阻塞、事件驱动的架构:这种设计使得 Nginx 能够高效地处理...
3. **执行安装**:运行Nginx.exe,根据提示进行安装。在Linux中,这可能涉及赋予脚本执行权限并执行它。 4. **配置服务**:一键安装通常会自动配置Nginx的基础设置,如监听端口、日志文件位置、根目录等。用户也...
在这个场景下,我们已经有了一个专为麒麟系统arm64架构准备的Nginx离线安装包。这意味着我们可以直接在没有网络连接的麒麟arm64设备上进行安装。 安装过程如下: 1. **下载离线安装包**:首先,你需要在有网络的...
### Nginx证书转换jks知识点详解 #### 一、背景与目的 在现代Web服务部署中,Nginx作为一款高性能的HTTP和反向代理Web服务器,被...这一过程对于在生产环境中部署基于Nginx的服务至关重要,确保了数据传输的安全性。
**Nginx安全配置** - **限制访问**:通过`allow`和`deny`规则控制IP访问权限。 - **HTTPS配置**:配置SSL证书,确保数据传输的安全性。 - **日志审计**:记录和监控Nginx的日志,以便及时发现和应对潜在攻击。 ...
4. **启动Nginx**:运行Nginx可执行文件启动服务,查看是否有错误提示。 5. **验证安装**:在浏览器中输入`http://your_server_ip`,如果能看到Nginx的欢迎页面,说明安装成功。 6. **配置防火墙**:如果服务器有...
【描述】"nginx-1.16.1.tar.gz + nginx-upload-module-2.3.0.tar.gz" 提示我们这个压缩包包含了 Nginx 的 1.16.1 版本源代码和 nginx-upload-module 的 2.3.0 版本源代码。.tar.gz 文件是 Linux 下常见的归档压缩...
- 对于负载均衡,可以通过在Nginx配置文件中定义多个后端服务器,并使用`proxy_pass`指令来实现。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { ...
4. **配置检查**:在启动前,可以使用`nginx -t -c conf/nginx.conf`命令检查配置文件的有效性,如果有错误,Nginx会给出提示。 5. **启动与停止**:若无错误,直接按回车启动Nginx;要停止Nginx,可以使用`nginx -s...
记住,版本匹配是关键,"亲测可用,一定要对应版本"的提示强调了这一点,不同版本的FastDFS和Nginx模块可能存在兼容性问题,选择正确的版本能避免不必要的麻烦。在实际操作中,应根据自己的业务需求和服务器环境进行...