服务器与部署 / 技术笔记
Nginx 与反向代理
从用户的一次访问开始,理解 Nginx 怎样接收请求、匹配规则并转发到后端服务。
- 内容章节
- 6 节
- 阅读重点
- 匹配与转发
- 示例语言
- Nginx
用户访问网站时,通常不会直接连接 Node.js 或 Spring Boot 的内部端口。Nginx 会站在入口,接收公开请求,再把它交给真正处理业务的服务。
文本示意
text
反向代理隐藏了后端服务的位置,并为它们提供统一入口。
1. 反向代理到底反向在哪里
普通代理代表客户端去访问外部网站,反向代理代表服务器接收客户端请求。用户只知道域名,不需要知道内部运行了几个服务。
文本示意
text
Nginx 可以根据路径把请求送到不同目标,也可以统一处理 HTTPS、压缩和访问日志。
2. server 和 location 怎样匹配
server 先根据端口和域名选择站点,location 再根据路径选择处理规则。
终端命令
bash
proxy_pass 末尾有没有斜杠会影响转发后的路径。修改前先写出原始 URL 和目标 URL,避免靠猜测调整。
3. 请求头为什么要转发
后端直接看到的连接来自 Nginx。如果不转发信息,应用可能不知道用户原始 IP、域名和协议。
终端命令
bash
应用只有在信任当前代理时才应该读取这些头,否则客户端可以自己伪造它们。
4. 静态文件和接口怎样分流
静态文件可以由 Nginx 直接读取,动态接口继续转发给应用。
终端命令
bash
这样应用不用处理图片和样式文件,接口也能保持独立的超时与日志策略。
5. 超时与上传限制怎样设置
默认配置不一定适合文件上传或长时间任务。
终端命令
bash
数值不应盲目增大。合理限制可以尽早拒绝异常请求,也能避免连接长时间占用服务器资源。
6. 一次请求穿过 Nginx 的完整过程
一次接口访问会经过下面的步骤:
文本示意
text
排错时按照同样顺序检查域名、端口、匹配规则、上游服务和响应日志,通常比直接重写配置更快。