Nginx 路由、反向代理与请求排错
Docker、Nginx 与 Python 项目部署#Python全栈#第十九阶段#Docker、Nginx 与 Python 项目部署#Nginx 路由、反向代理与请求排错约 946 字 · 3 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Nginx 的 http、server 与 location 配置分别承担什么职责?
追问 同一入口服务多个域名或路径时怎样组织?实际配置包含哪些 include 文件,怎样确认请求命中了哪个 server?
location 的精确匹配、前缀匹配与正则匹配怎样影响路由?
追问 /api/、/static/ 与前端页面回退怎样避免互相覆盖?为什么不能只根据配置书写顺序判断所有匹配结果?
普通前缀 location 中,proxy_pass 带 URI 与不带 URI 怎样影响后端路径?
追问 转发 /api/questions 时,保留 /api/ 或去掉该前缀分别怎样设计?尾部斜杠、重写规则和变量配置变化时需要重新验证什么?
代理应怎样传递 Host 与原始访问协议?
追问 后端生成下载链接、登录重定向和安全 Cookie 时如何使用这些信息?挂载在路径前缀下的应用还需怎样处理 root_path 或框架对应配置?
后端怎样获得可信的客户端地址,而不是盲目信任转发头?
追问 单层与多层代理如何区分?允许哪些代理来源,怎样避免客户端自己伪造地址影响日志、限流与权限判断?
upstream 与多个后端怎样提供负载分配?
追问 怎样确认当前请求落到哪个实例?容器重建导致 IP 变化时,域名解析、resolver 与 Nginx 版本支持怎样核对,不能只假设会自动刷新?
连接、发送与读取超时分别限制哪一段等待?
追问 proxy_read_timeout 是否简单等于整个请求的最大总时长?应用服务器、代理与客户端的期限如何配合,避免一层提前中断或无限等待?
502、504 与应用返回的 500 应怎样分层排查?
追问 连接拒绝、Socket 权限、上游退出与响应过慢分别看哪些证据?怎样对比代理日志、应用日志和直接访问上游的结果?
上传请求被拒绝或处理很慢时,怎样检查代理到应用的路径?
追问 请求体大小限制、请求缓冲、临时目录和应用校验如何分别定位?为什么代理返回 413 与应用业务拒绝不是同一层问题?
修改 Nginx 配置后,怎样校验并安全加载?
追问 语法检查与运行验证各证明什么?reload 与 restart 有什么区别,配置加载失败或路由结果不符合预期时怎样恢复?
代理核对资料: Nginx:Core module、Proxy module。指令默认值、域名解析和可用功能按实际 Nginx 版本核对。