Nginx配置路由跳转(根据不同端口、路径跳转不同的链接地址)

本文介绍了Nginx配置中针对不同场景的端口转跳方法。第一种方法是通过拦截路径访问代理地址,适用于Nginx与项目不在同一服务器的情况。第二种方法则是通过拦截路径访问本地项目根目录,适合于Nginx与前端项目在同一服务器且Nginx启动前端项目。配置时需注意端口和域名的唯一性,可根据需求配置多个server节点。

配置地址转跳
在这里插入图片描述
注:图中第一种方法地址http://www.baidu.com需修改为http://www.baidu.com/

如上图所示,端口为80,域名为localhost1转跳方式分为两种:
第一种是图中标记1所示,通过拦截路径访问代理地址
第二种是图中标记2所示,通过拦截路径访问本地项目根目录

如有需求需要根据不同的端口跳转不同路径可配置多个server节点,需要注意的是端口和域名不能相同,其他如图配置即可
适用场景;
第一种适用于Nginx与项目不再同一服务器场景
第二种适用于Nginx与所需访问前端项目在同一服务器,适用Nginx启动的前端项目

### Nginx 配置一个端口根据请求路由到两个不同的 Web 应用 在 Nginx 中,可以通过配置不同的 `server` 块或 `location` 块,实现根据请求的域名、路径或 URL 路由不同的后端 Web 应用。这种方式可以充分利用单个端口发布多个 Web 应用,提升资源利用率并简化访问入口。 #### 通过域名区分不同的 Web 应用 当使用不同的域名访问时,可以通过设置 `server_name` 来区分目标应用。例如,`aaa.example.com` 指向应用 A,`bbb.example.com` 指向应用 B。 ```nginx server { listen 80; server_name aaa.example.com; location / { root /var/www/app-a; index index.html; try_files $uri $uri/ =404; } } ``` ```nginx server { listen 80; server_name bbb.example.com; location / { root /var/www/app-b; index index.html; try_files $uri $uri/ =404; } } ``` 上述配置中,Nginx 通过 `server_name` 匹配请求头中的域名,并将请求路由到对应的 Web 应用目录[^2]。 #### 通过路径区分不同的 Web 应用 如果希望通过同一个域名下的不同路径访问多个 Web 应用,可以使用 `location` 块进行匹配。例如,`example.com/app1/` 路由到应用 A,`example.com/app2/` 路由到应用 B。 ```nginx server { listen 80; server_name example.com; location /app1/ { proxy_pass http://127.0.0.1:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /app2/ { proxy_pass http://127.0.0.1:4000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 上述配置中,Nginx 根据请求路径将流量代理到不同的后端服务,实现单端口多应用的分发[^3]。 #### 通过 URL 参数或请求头进行高级路由 在某些场景下,可能需要根据请求头(如 `Host`、`User-Agent`)或 URL 参数进行更复杂的路由。例如,基于请求头将移动端和桌面端流量分别发到不同服务。 ```nginx server { listen 80; if ($http_user_agent ~* (iPhone|iPad|Android)) { rewrite ^/(.*)$ /mobile/$1 break; } location /mobile/ { proxy_pass http://127.0.0.1:5000/; } location / { proxy_pass http://127.0.0.1:6000/; } } ``` 此配置通过检测请求头中的用户代理信息,将移动设备请求重写并发到指定的后端服务[^1]。 #### 示例:配置两个 Spring Boot 应用共用一个 Nginx 端口 假设本地运行两个 Spring Boot 应用: - 产品服务:运行在 `localhost:8080`,上下文路径为 `/product` - 订单服务:运行在 `localhost:8081`,上下文路径为 `/order` Nginx 配置如下: ```nginx server { listen 80; location /product/ { proxy_pass http://127.0.0.1:8080/product/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /order/ { proxy_pass http://127.0.0.1:8081/order/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 通过访问 `http://example.com/product/add` 和 `http://example.com/order/update`,即可分别访问两个不同的 Web 应用[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初学者_mengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值