nginx反向代理典型配置的核心在于通过`proxy_pass`指令将客户端请求转发到后端服务器,同时可结合`upstream`实现负载均衡、`proxy_set_header`传递客户端真实IP、`proxy_cache`开启缓存等。 以下是一个最常用的基础配置示例,适用于单台后端服务器的情况:

```nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
该配置监听80端口,将所有请求转发到本地的8080端口,并保留原始Host和客户端IP信息。如需支持多台后端服务器,可使用`upstream`模块:
```nginx
upstream backend {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
server 192.168.1.12:8080 backup;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
此配置实现了简单的轮询负载均衡,并允许设置权重和备用节点。对于高并发场景,可加入`proxy_cache`缓存静态资源:
```nginx
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=1g inactive=60m;
location / {
proxy_cache mycache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
proxy_pass http://backend;
}
```
此外,常见的安全与调优配置包括:限制请求体大小(`client_max_body_size`)、超时时间(`proxy_connect_timeout`、`proxy_read_timeout`)以及WebSocket支持(`proxy_http_version 1.1`和`proxy_set_header Upgrade`)。实际部署时,需根据业务需求灵活调整上述参数。
【常见问题】
问题1:nginx反向代理典型配置中如何实现负载均衡?
回答1:在nginx反向代理典型配置中,通过`upstream`块定义一组后端服务器,并在`proxy_pass`中引用该upstream名称。例如`upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; }`,默认采用轮询算法。可添加`weight`、`backup`等参数调整策略,这是nginx反向代理典型配置实现负载均衡的标准方式。
问题2:nginx反向代理典型配置如何传递客户端真实IP?
回答2:在nginx反向代理典型配置中,使用`proxy_set_header X-Real-IP $remote_addr;`和`proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;`两行指令。前者将客户端IP直接赋值,后者将IP追加到已有链中,确保后端应用能获取真实IP,这是nginx反向代理典型配置中必不可少的步骤。
问题3:nginx反向代理典型配置中如何开启缓存?
回答3:在nginx反向代理典型配置中,先在`http`块定义缓存路径如`proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m;`,然后在`location`块中设置`proxy_cache mycache;`以及`proxy_cache_valid 200 302 60m;`。这样静态资源会被缓存,减少后端压力,是nginx反向代理典型配置常用的性能优化手段。
问题4:nginx反向代理典型配置如何支持WebSocket?
回答4:在nginx反向代理典型配置中,需在`location`块内添加`proxy_http_version 1.1;`和`proxy_set_header Upgrade $http_upgrade;`以及`proxy_set_header Connection "upgrade";`。同时`proxy_pass`指向WebSocket后端,即可实现长连接转发,这是nginx反向代理典型配置处理WebSocket的标准方法。


