tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 各种MQ

  • Nginx

    • 初识nginx
    • Nginx的其它功能
    • Nginx的一些问题
    • 使用踩坑记录
      • 文件过大
      • 路径映射问题
        • 修正
        • 1-使用alias
        • 2-调整 location 路径匹配
  • IdentityServer

  • Redis

  • Linux

  • 中间件
  • Nginx
EffectTang
2025-04-02
目录

使用踩坑记录

# Nginx使用踩坑记录

# 文件过大

当在使用Nginx时遇到“413 Request Entity Too Large”错误,通常是因为上传文件的大小超过了Nginx配置中允许的最大值。要解决此问题,可以通过调整Nginx配置文件中的client_max_body_size参数来增加允许上传文件的最大大小。 修改 Nginx 配置

在 Nginx 中,可以通过修改 client_max_body_size 属性来解决这个问题。

找到配置文件,nginx.conf进行设置,以下是几种不同程度的设置,

在 http 节点下(全局设置)

http {
	client_max_body_size 20m; # 设置为20MB
}
1
2
3

在 server 节点下(服务器级别)

server {
	client_max_body_size 20m; # 设置为20MB
}
1
2
3

在 location 节点下(特定路由)

location /upload {
	client_max_body_size 20m; # 设置为20MB
}
1
2
3

修改完配置文件后,重载 Nginx 配置使之生效:

sudo nginx -s reload
1

注意:当执行 nginx.exe -s reload 后,原本的 Nginx 服务进程数量会增加,是正常现象,具体原因与 Nginx 的平滑重载机制有关。

Nginx 采用 Master-Worker 多进程模型:

  • Master 进程:负责管理配置、启动/停止 Worker 进程,以及接收外部信号(如 reload)
  • Worker 进程:实际处理请求的子进程。默认配置下,Worker 数量通常与 CPU 核心数一致(例如 2 个) 当执行 nginx -s reload 时,Nginx 会按以下步骤操作:
  1. Master 进程接收 HUP 信号:触发配置重载流程
  2. 校验新配置语法:若语法错误,流程终止,旧配置继续生效
  3. 启动新 Worker 进程:基于新配置生成新的 Worker 进程
  4. 旧 Worker 进程优雅退出:旧 Worker 停止接收新请求,但会继续处理已建立的连接,直到完成后才退出

# 路径映射问题

写后缀的时候,一定不要写重了。

server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # location /gen {
        #     root   html;
        #     index  index.html index.htm;
        # }

        location /sky {
            root   /opt/homebrew/var/www/sky;
            index  index.html index.htm;
        }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

根据上述例子,请问,访问本机上访问,http://localhost:8080/sky,返回的内容是 /opt/homebrew/var/www/sky/index.html 文件 对吗?

答案:不是的。

在上述例子中,当你访问 http://localhost:8080/sky 时,Nginx 会尝试返回 /opt/homebrew/var/www/sky/sky/index.html 文件,注意,这里是两个sky。

# 修正

如果你希望直接访问 http://localhost:8080/sky 并返回 /opt/homebrew/var/www/sky/index.html 文件,则需要调整 location 块的配置。

你应该使用 alias 而不是 root,或者修改 location 的路径匹配方式。以下是两种实现方法:

# 1-使用alias

location /sky/ {
    alias /opt/homebrew/var/www/sky/;
    index index.html index.htm;
}
1
2
3
4

这种方法中,/sky/ 请求会被直接映射到 /opt/homebrew/var/www/sky/ 目录下,所以 http://localhost:8080/sky/ 会正确地指向 /opt/homebrew/var/www/sky/index.html。

# 2-调整 location 路径匹配

location /sky {
    root /opt/homebrew/var/www;
    index index.html index.htm;
}
1
2
3
4

在这个配置中,Nginx 会把 /sky 请求映射到 /opt/homebrew/var/www/sky 目录下,因此 http://localhost:8080/sky 也会正确地指向 /opt/homebrew/var/www/sky/index.html。

上次更新: 2025/05/11, 15:27:14
Nginx的一些问题
初入认识Ids4

← Nginx的一些问题 初入认识Ids4→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式