Nginx 常见问题总结与解决

Nginx 常见问题总结与解决


1. 配置错误

  • 现象:Nginx无法启动/重载。
  • 原因:语法错误、路径错误。
  • 解决 :
    • 检查语法:nginx -t

    • 查看错误日志:tail -f /var/log/nginx/error.log

    • 路径问题 :区分root与alias:

      nginx 复制代码
      location /static/ {
          alias /data/www/static/; # 请求/static/img.png → /data/www/static/img.png
      }
      location /assets/ {
          root /data/www/; # 请求/assets/img.png → /data/www/assets/img.png
      }

2. 性能优化

  • 现象:高并发下连接超限或响应慢。
  • 解决 :
    • 调整nginx.conf参数:

      nginx 复制代码
      worker_processes auto; # 与CPU核心数一致
      events {
          worker_connections 10240; # 单进程最大连接数
      }
      http {
          keepalive_timeout 65;
          keepalive_requests 1000;
      }
    • 修改系统文件描述符限制:

      bash 复制代码
      ulimit -n 65535  # 临时生效
      # 永久生效:编辑/etc/security/limits.conf,添加:
      # * soft nofile 65535
      # * hard nofile 65535

3. 权限问题

  • 现象:403 Forbidden。
  • 解决 :
    • 检查文件权限:

      bash 复制代码
      chmod -R 755 /data/www;
      chown -R www-data:www-data /data/www;
    • 禁用SELinux(临时):

      bash 复制代码
      setenforce 0  # 或修改/etc/selinux/config永久关闭

4. SSL证书问题

  • 现象:浏览器提示证书错误。
  • 解决 :
    • 确保证书链完整(合并中间证书):

      bash 复制代码
      cat domain.crt intermediate.crt > fullchain.crt
    • 配置SSL协议与加密套件:

      nginx 复制代码
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;

5. 反向代理问题

  • 现象:后端无法获取真实IP或超时。
  • 解决 :
    • 传递必要请求头:

      nginx 复制代码
      location / {
          proxy_pass http://backend;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_connect_timeout 60s;
          proxy_read_timeout 60s;
      }

6. 负载均衡配置

  • 现象:后端服务宕机未剔除。
  • 解决 :
    • 配置健康检查:

      nginx 复制代码
      upstream backend {
          server 10.0.0.1:80 max_fails=3 fail_timeout=30s;
          server 10.0.0.2:80;
          least_conn; # 可选策略:轮询(默认)、weight、ip_hash等
      }

7. 静态文件服务

  • 现象:静态资源404或SPA路由失效。
  • 解决 :
    • 使用try_files处理前端路由:

      nginx 复制代码
      location / {
          root /data/www;
          try_files $uri $uri/ /index.html;
      }

8. 重写规则

  • 现象:重定向循环或URL未生效。
  • 解决 :
    • HTTP强制跳转HTTPS:

      nginx 复制代码
      server {
          listen 80;
          server_name example.com;
          return 301 https://$host$request_uri;
      }

9. 跨域问题(CORS)

  • 现象:前端请求跨域被拦截。
  • 解决 :
    • 添加响应头:

      nginx 复制代码
      location /api/ {
          add_header 'Access-Control-Allow-Origin' '*';
          add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      }

10. WebSocket支持

  • 现象:WebSocket连接失败。
  • 解决 :
    • 配置代理头:

      nginx 复制代码
      location /ws/ {
          proxy_pass http://backend;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
      }

11. 安全加固

  • 现象:服务器信息泄露。
  • 解决 :
    • 隐藏Nginx版本:

      nginx 复制代码
      server_tokens off;
    • 添加安全头:

      nginx 复制代码
      add_header X-Frame-Options DENY;
      add_header X-Content-Type-Options nosniff;

12. 日志管理

  • 现象:日志文件过大。
  • 解决 :
    • 使用logrotate配置轮转:

      bash 复制代码
      # /etc/logrotate.d/nginx
      /var/log/nginx/*.log {
          daily
          rotate 30
          compress
          missingok
          notifempty
          sharedscripts
          postrotate
              /usr/sbin/nginx -s reload
          endscript
      }

总结

遇到问题时,优先检查错误日志(error.log),结合nginx -t验证配置。复杂场景可通过分阶段调试(如逐步添加规则)定位问题根源。

相关推荐
小天源5 小时前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控
幸福清风12 小时前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
梅梅绵绵冰13 小时前
Nginx反向代理
运维·nginx
2601_965619692 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619692 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生2 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
xixingzhe23 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto3 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元3 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT4 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源