你玩呢 你改了springboot的端口号 ,这还叫共用同一个端口吗
时间: 2025-06-27 10:17:52 浏览: 27
### 修改 Spring Boot 端口号后实现多个应用共用同一端口
为了使修改后的 Spring Boot 应用程序能够与其他应用程序在同一台服务器上共用一个端口,通常的做法不是让这些服务直接监听相同的 HTTP(S) 端口,而是通过引入反向代理服务器来处理这一需求。Nginx 是一种常用的解决方案。
#### 使用 Nginx 实现端口共享
当希望前端 Vue 和后端 Spring Boot 项目可以共同使用一个外部可见的端口时,可以通过配置 Nginx 来作为网关来进行流量分发[^3]:
1. **安装并配置 Nginx**
安装好 Nginx 后,在其配置文件中定义不同的 location 路径对应到各自的服务地址和端口。对于 API 请求路径 `/api` 下的内容转发给运行于特定内部端口上的 Spring Boot 应用;而对于其他静态资源请求,则指向本地构建好的前端工程目录或对应的 Webpack Dev Server 地址。
2. **调整 Spring Boot 的端口设置**
如果已经按照说明更改了 `application.properties` 或者 `application.yml` 文件中的 server.port 属性值,并且在 IDE 中设置了相应的 VM 参数 `-Dserver.port=XXXX` ,那么此时该 Spring Boot 应用将会监听指定的新端口而不是默认8080端口[^1]。
3. **编写 Nginx 配置样例**
下面是一个简单的 nginx.conf 示例片段用于展示如何将来自单个公共 IP/域名的不同 URL 映射至后台不同微服务实例的方式:
```nginx
http {
upstream backend_service {
server localhost:9090;
}
server {
listen 80;
server_name example.com;
location /api/ {
proxy_pass http://backend_service/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
root html/dist; # 假设这是Vue编译输出的位置
index index.html index.htm;
}
}
}
```
在这个例子中,任何针对根路径 (`/`) 的HTTP GET都将被导向位于磁盘上的HTML/CSS/JS等静态资产;而所有以 `/api/` 开头的URL都会经过代理发送给绑定到了localhost:9090这个新端口上的Spring Boot RESTful web service.
这样就实现了即使各个子系统实际工作在独立的工作进程中并通过各自的私有网络接口通信,但从外界看来它们似乎是在一起工作的效果——即所谓的“虚拟主机”。
阅读全文