参考资料

  1. NginxHTTPS服务器搭建详细说明以及案例
  2. Nginx upstream容错机制详解详细说明以及案例
  3. Nginx基础安全设置及示例
  4. nginx -e详细说明以及案例
  5. Nginx访问日志配置详细说明以及案例
  6. 如何监控Nginx的访问日志?
  7. Nginx动态更新upstream详细说明以及案例
  8. FastCGI(Fast Common Gateway Interface,快速通用网关接口)详细说明以及案例
  1. 错误:端口冲突

    • 问题bind() to 0.0.0.0:80 failed (98: Address already in use)

    • 原因:80端口被其他服务占用(如Apache)。

    • 解决方案

      sudo netstat -tulnp | grep :80  # 查看占用进程
      sudo kill <PID>                 # 终止占用进程
  2. 错误:文件权限不足

    • 问题open() "/var/log/nginx/error.log" failed (13: Permission denied)

    • 原因:Nginx用户无日志目录写入权限。

    • 解决方案

      sudo chown -R nginx:nginx /var/log/nginx
      sudo chmod -R 755 /var/log/nginx
  3. 错误:语法错误

    • 问题nginx: [emerg] unknown directive "servr" in /etc/nginx/conf.d/default.conf

    • 原因:配置文件中存在拼写错误(如servr应为server)。

    • 解决方案

      # 修正后的配置示例
      server {
          listen 80;
          server_name example.com;
      }
  4. 错误:SSL证书问题

    • 问题SSL_CTX_use_PrivateKey_file("/path/to/key") failed (SSL: error:0909006C:PEM routines:get_name:no start line)

    • 原因:证书或密钥文件格式错误。

    • 解决方案

      # 正确配置示例
      server {
          listen 443 ssl;
          ssl_certificate /path/to/cert.pem;
          ssl_certificate_key /path/to/key.pem;
      }
  5. 错误:404 Not Found

    • 问题:静态文件返回404。

    • 原因rootalias路径配置错误。

    • 解决方案

      # 正确配置示例
      location /static/ {
          alias /var/www/static/;  # 注意结尾的/
      }
  6. 错误:重定向循环

    • 问题ERR_TOO_MANY_REDIRECTS

    • 原因server_name未正确配置或HTTPS强制重定向逻辑错误。

    • 解决方案

      # 正确配置示例
      server {
          listen 80;
          server_name example.com;
          return 301 https://$host$request_uri;
      }
  7. 错误:上游服务不可达

    • 问题connect() failed (111: Connection refused) while connecting to upstream

    • 原因:后端服务未运行或防火墙阻止。

    • 解决方案

      # 检查后端服务状态
      upstream backend {
          server 127.0.0.1:8080;
      }
  8. 错误:请求头过大

    • 问题upstream sent too big header while reading response header from upstream

    • 解决方案

      # 调整缓冲区大小
      proxy_buffer_size 128k;
      proxy_buffers 4 256k;
  9. 错误:worker_connections不足

    • 问题worker_connections are not enough while connecting to upstream

    • 解决方案

      # 在nginx.conf中增加
      events {
          worker_connections 4096;
      }
  10. 错误:临时文件写入失败

    • 问题/tmp/nginx/proxy_temp failed (28: No space left on device)

    • 原因:磁盘空间不足。

    • 解决方案

      df -h                  # 检查磁盘空间
      sudo nginx -t          # 测试配置
      sudo systemctl restart nginx