内容提要
本文总结了Nginx常见的配置错误,包括文件描述符耗尽、无法关闭错误日志、上游未开启长连接、混淆配置继承规则和Alias安全风险。文章提供了解决这些问题的方法和建议。
关键要点
-
Nginx 常见配置错误包括文件描述符耗尽、无法关闭错误日志、上游未开启长连接、混淆配置继承规则和 Alias 安全风险。
-
文件描述符耗尽是由于同时打开的连接数或文件数过多导致的,默认每个用户的 FD 数量限制为 1024。
-
可以通过 worker_connections 和 worker_rlimit_nofile 配置来限制每个工作进程的 TCP 连接数量和最大 FD 数量。
-
关闭错误日志时应使用 error_log /dev/null emerg; 而不是 error_log off;,后者会创建名为 off 的日志文件。
-
Nginx 默认使用短连接与上游服务器通信,开启 keepalive 功能可以复用 TCP 连接,减少资源消耗。
-
Nginx 配置中低层级的配置块优先级高于高层级,低层级配置会覆盖高层级配置。
-
未保护的系统状态信息可能会被攻击者利用,建议使用 HTTP Basic 认证或限制 IP 网段来保护状态信息。
-
使用 alias 指令时需谨慎,错误配置可能导致安全风险,建议使用 alias 时确保路径安全。
延伸问答
Nginx 中如何解决文件描述符耗尽的问题?
可以通过设置 worker_connections 和 worker_rlimit_nofile 来限制每个工作进程的 TCP 连接数量和最大文件描述符数量。
如何正确关闭 Nginx 的错误日志?
应使用配置 error_log /dev/null emerg; 来关闭错误日志,而不是 error_log off;,后者会创建名为 off 的日志文件。
Nginx 如何开启与上游服务器的长连接?
可以在 upstream 配置中添加 keepalive 指令,例如 keepalive 16;,并在 proxy_pass 中设置 HTTP/1.1 协议。
Nginx 配置中的继承规则是怎样的?
低层级的配置块优先级高于高层级,低层级配置会覆盖高层级配置。
如何保护 Nginx 的系统状态信息?
可以通过 HTTP Basic 认证或限制 IP 网段来保护状态信息,例如使用 auth_basic 和 allow/deny 指令。
使用 Nginx 的 alias 指令时需要注意什么?
使用 alias 时需确保路径安全,避免用户绕过目录限制,例如应使用 location /pic/ { alias /data/pic/; } 的形式。