在Nginx中,您可以通过配置不同的 location 块将特定路径的请求路由到不同的后端服务器
在Nginx中,您可以通过配置不同的 location 块将特定路径的请求路由到不同的后端服务器。以下是详细的配置方法:
1. 基础配置示例
2. 关键配置解释
2.1 location 路径匹配
-
精确匹配:
location = /path { ... }
仅匹配/path请求。 -
前缀匹配:
location /prefix/ { ... }
匹配以/prefix/开头的所有请求。 -
正则匹配:
location ~ ^/regex/(.*)$ { ... }
使用正则表达式匹配路径。
2.2 proxy_pass 代理行为
-
保留路径前缀:
location /app1/ { proxy_pass http://backend1; # 无结尾 / }
请求
example.com/app1/api→ 转发到backend1/app1/api。 -
去除路径前缀:
location /app1/ { proxy_pass http://backend1/; # 有结尾 / }
请求
example.com/app1/api→ 转发到backend1/api。
2.3 请求头传递
-
proxy_set_header:确保后端服务器获取真实客户端信息:proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3. 高级场景
3.1 路径重写(Rewrite)
location /legacy/ { rewrite ^/legacy/(.*)$ /new/$1 break; # 将 /legacy/ 重写为 /new/ proxy_pass http://backend3; }
3.2 负载均衡
upstream backend { server 192.168.1.30:80 weight=2; # 权重2 server 192.168.1.40:80; } location / { proxy_pass http://backend; }
3.3 静态文件处理
location /static/ { root /var/www/html; # 路径为 /var/www/html/static/ expires 30d; # 缓存30天 }
4. 测试与调试
-
检查语法:
nginx -t -
重载配置:
nginx -s reload -
日志排查:
-
查看Nginx访问日志:
/var/log/nginx/access.log -
查看Nginx错误日志:
/var/log/nginx/error.log
-
5. 完整示例
http { upstream app1_server { server 10.0.0.1:8080; } upstream app2_server { server 10.0.0.2:8080; } server { listen 80; server_name mydomain.com; # 路由到应用1 location /app1/ { proxy_pass http://app1_server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 路由到应用2(带路径重写) location /app2/ { rewrite ^/app2/(.*) /$1 break; proxy_pass http://app2_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 默认路由 location / { return 404; # 或代理到默认后端 } } }
通过上述配置,Nginx会根据请求路径将流量分发到不同的后端服务器。请根据实际需求调整IP、端口和路径规则。
郭慕荣博客园

浙公网安备 33010602011771号