nginx 修改配置
如果你的后端服务在不同的端口上运行,但静态资源访问路径相同,你可以使用 Nginx 的 location 配置来将请求转发到不同的后端服务,同时处理静态文件。这里有几种常见的方式:
方案 1: 基于路径的配置
如果所有服务的静态资源路径相同,你可以直接使用 Nginx 的 location 指令来处理不同的服务请求。以下是一个示例:
server {
listen 80;
server_name localhost; # 或者你的内网 IP
# 静态资源路径(假设都是 /api/ )
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 根据请求 URI 中的某个部分选择后端服务
set $backend "";
if ($request_uri ~* "^/api/service1/") {
set $backend "http://localhost:8081";
}
if ($request_uri ~* "^/api/service2/") {
set $backend "http://localhost:8082";
}
proxy_pass $backend; # 转发请求到相应的后端服务
}
}
方案 2: 反向代理不同路径的静态资源
如果你需要在一个路径下访问不同服务的静态资源,可以将它们按服务区分,或者使用一个通用的后端处理请求。示例:
server {
listen 80;
server_name localhost; # 或者你的内网 IP
location /service1/api/ {
proxy_pass http://localhost:8081/; # 将请求代理到服务 1 的 API
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /service2/api/ {
proxy_pass http://localhost:8082/; # 将请求代理到服务 2 的 API
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 静态资源访问(所有服务使用同一路径)
location /api/ {
# 根据请求 URI 转发到相应的后端
# 这里可以采用方案 1 中的 set 逻辑
set $backend "";
if ($request_uri ~* "^/api/service1/") {
set $backend "http://localhost:8081";
}
if ($request_uri ~* "^/api/service2/") {
set $backend "http://localhost:8082";
}
proxy_pass $backend; # 转发请求到相应的后端服务
}
}
说明
请求路径选择:
使用 Nginx 的 if 指令来根据请求的 URI 判断将请求转发到哪个后端服务。这里的逻辑可以根据实际情况调整。
相同的路径:
通过 /api/ 统一访问路径,不同服务的静态资源和 API 都可以通过同一 URI 访问。
路径重写:
如果需要,可以使用 rewrite 指令重写请求路径,使其符合后端服务的要求。
小结
这些方法可以帮助你在同一 Nginx 配置中灵活处理不同的后端服务,同时统一访问路径。根据实际需求选择适合的方案来实现请求的分发和静态资源的处理。