• 常见 HTTP 状态码详解与Nginx 文件上传大小限制


    在我们日常使用 Nginx 搭建网站或应用服务时,可能会遇到很多与文件上传和请求响应相关的问题。今天我们就来聊聊 如何限制文件上传的大小,并介绍一些常见的 HTTP 状态码 及其在 Nginx 中的处理方式。
    在这里插入图片描述

    一、文件上传大小限制

    有时,我们需要限制用户上传文件的大小,以防止上传过大的文件占用服务器资源。在 Nginx 中,可以通过 client_max_body_size 指令轻松实现这一目的。该指令用于限制 HTTP 请求体的最大大小,也就是用户上传的文件大小。

    配置方法

    你可以将该指令放在不同的配置块中,决定其作用范围。

    • 全局限制(针对所有请求)

      http {
          client_max_body_size 50M;  # 限制请求体最大为 50M
          ...
      }
      
    • 针对某个虚拟主机的限制

      server {
          listen 80;
          server_name example.com;
      
          client_max_body_size 50M;  # 针对 example.com 限制最大上传为 50M
      
          location / {
              ...
          }
      }
      
    • 针对特定路径的限制

      server {
          listen 80;
          server_name example.com;
      
          location /upload {
              client_max_body_size 100M;  # 仅针对 /upload 路径限制最大上传为 100M
          }
      }
      

    413 Request Entity Too Large 错误

    如果上传的文件超过了我们设置的限制,Nginx 会返回 413 Request Entity Too Large 错误。我们可以为这个错误配置自定义的页面:

    server {
        error_page 413 /custom_413.html;
        location = /custom_413.html {
            root /usr/share/nginx/html;
        }
    }
    

    配置生效

    配置完成后,我们需要进行以下操作,使更改生效:

    1. 测试配置文件是否正确:
      sudo nginx -t
      
    2. 重新加载 Nginx 配置:
      sudo systemctl reload nginx
      

    二、常见 HTTP 状态码详解

    HTTP 状态码是服务器返回给客户端的重要信息,用于指示请求的处理结果。不同状态码代表不同的请求结果,下面列出一些常见的状态码及其在 Nginx 中的处理方式。

    1. 200 OK

    • 解释:请求成功,服务器正常返回了资源。
    • Nginx:无需特别配置,默认返回。

    2. 301 Moved Permanently

    • 解释:请求的资源已永久移动到新的位置。
    • Nginx 配置
      server {
          listen 80;
          server_name example.com;
          return 301 https://newdomain.com$request_uri;
      }
      

    3. 302 Found

    • 解释:资源暂时移动,客户端可以继续使用原 URL 进行请求。
    • Nginx 配置
      server {
          listen 80;
          server_name example.com;
          return 302 https://newdomain.com$request_uri;
      }
      

    4. 403 Forbidden

    • 解释:服务器拒绝处理请求,可能是因为没有权限访问资源。
    • Nginx 配置
      server {
          location /restricted {
              deny all;
          }
      }
      

    5. 404 Not Found

    • 解释:服务器无法找到请求的资源,通常是因为资源已删除或不存在。
    • Nginx 配置
      server {
          location / {
              try_files $uri $uri/ =404;
          }
      }
      

    6. 422 Unprocessable Entity

    • 解释:服务器理解请求内容,但由于请求数据有误,无法处理请求。通常在验证失败时使用。
    • Nginx 配置
      server {
          error_page 422 /custom_422.html;
          location = /custom_422.html {
              root /usr/share/nginx/html;
          }
      }
      

    7. 500 Internal Server Error

    • 解释:服务器内部错误,无法处理请求,通常是服务器端程序出现问题。
    • Nginx 配置
      server {
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
              root /usr/share/nginx/html;
          }
      }
      

    8. 502 Bad Gateway

    • 解释:服务器作为网关或代理,接收到无效的响应,通常发生在后端服务有问题时。
    • Nginx 配置
      server {
          error_page 502 /custom_502.html;
          location = /custom_502.html {
              root /usr/share/nginx/html;
          }
      }
      

    9. 503 Service Unavailable

    • 解释:服务器暂时无法处理请求,可能是因为维护或负载过高。
    • Nginx 配置
      server {
          error_page 503 /custom_503.html;
          location = /custom_503.html {
              root /usr/share/nginx/html;
          }
          location / {
              if ($maintenance) {
                  return 503;
              }
          }
      }
      

    三、总结

    Nginx 是强大且灵活的服务器,能够通过配置文件轻松控制上传文件大小,并为各种 HTTP 状态码提供自定义的响应页面。在实际项目中,根据需要合理配置 Nginx 的行为,既可以提高安全性,又能提升用户体验。

  • 相关阅读:
    在VSCode中移除不必要的扩展
    55、美国德克萨斯大学奥斯汀分校、钱德拉家族电气与计算机工程系:通过迁移学习解决BCI个体差异性[不得不说,看技术还得是老美]
    Ransac算法例程
    Android基础第十天 | 字节跳动第四届青训营笔记
    记docker部署logstash的一次报错
    Sql查询所有子级元素
    ThreadLocal详解_ThreadLocal的使用及原理
    【前端实例教程】使用 HTML CSS 和 JavaScript 创建自定义搜索+下拉选择框菜单
    下一个行业风口:NFT 数字藏品,是机遇还是泡沫?
    Linux(基于Centos7)(二)
  • 原文地址:https://blog.csdn.net/problc/article/details/142151495