测验:nginx 反向代理
缺少 proxy_set_header Host $host; 时,实际会出现什么问题?
- 后端收到的 Host 是内部地址,重定向和回调 URL 会指向内部地址
- 代理找不到后端虚拟主机,连接必然失败
- 响应头 Vary 错误,无法 gzip
- 访问日志因缺少请求键而没有主机名
代理终止 TLS、向后端转发 HTTP 时,为什么会出现无限重定向?
- 后端认为请求是明文并重定向到 https,却没有请求头纠正这一判断
- 中间证书缺失,客户端反复协商
- 响应等待时间过短,代理重复发送
- 压缩协商头不一致,客户端重建请求
配置 location /api/ { proxy_pass http://backend/; } 时,请求 /api/users/1 会以什么路径传给后端?
- /api/users/1 ——原样传递
- /api/api/users/1 ——再次附加 location 路径
- /users/1——删除匹配的 /api/
- /——只传 proxy_pass 中的路径
上传文件返回 413,应用日志却毫无记录。最可能的原因是什么?
- 应用日志级别过低
- 超过 nginx 的 client_max_body_size(默认 1MB),由 nginx 直接响应
- 临时文件磁盘不足并静默失败
- Tomcat 线程不足,请求排队后断开
访问日志中 $request_time 很大,而 $upstream_response_time 很小,表示什么?
- 后端应用处理慢
- 后端数据库查询慢
- 后端很快,延迟位于客户端网络或传输区段
- 代理配置错误,两个值属于不同请求
为什么设置 gzip_vary on;?
- 提高压缩率
- 防止中间缓存把压缩响应发给不支持压缩的客户端
- 降低 CPU 使用率
- 自动设置 gzip_types
在 nginx 而不是应用中屏蔽 Tomcat Manager,实际好处是什么?
- 无需重新部署应用,只需 reload 即可修改策略
- nginx 处理更快
- Tomcat 不支持访问控制
- 不会留下日志