在1&1云服务器部署Gradle构建的Spring应用的问题及解决
解决Spring Boot应用通过Apache反向代理对外访问的问题
我之前也碰到过一模一样的情况,你的Spring Boot JAR在服务器本地能正常运行,但外部访问my-site-ip:8090超时,核心问题大概率是没有通过Apache做反向代理转发请求——哪怕你开了8090的TCP规则,很多云服务器或机房的网络环境里,直接暴露非标准端口会有额外限制,用Apache做代理不仅能解决访问问题,还能把请求转到更通用的80/443端口,访问更方便。
下面是完整的解决步骤:
1. 先启用Apache的代理模块
Ubuntu下的Apache默认没开启代理相关模块,先执行这两个命令启用:
sudo a2enmod proxy sudo a2enmod proxy_http
2. 创建并配置应用的虚拟主机文件
在/etc/apache2/sites-available/目录下新建你的应用配置文件,比如Myapp.conf:
sudo nano /etc/apache2/sites-available/Myapp.conf
把下面的配置粘贴进去(记得替换成你的服务器IP或域名):
<VirtualHost *:80> ServerName your-server-ip # 或者填你的域名,比如 myapp.com ServerAlias www.your-server-ip # 可选,域名的别名 ProxyRequests Off ProxyPreserveHost On # 把外部请求转发到本地8090端口的Spring Boot应用 ProxyPass / http://localhost:8090/ ProxyPassReverse / http://localhost:8090/ # 可选:添加日志方便排查问题 ErrorLog ${APACHE_LOG_DIR}/myapp-error.log CustomLog ${APACHE_LOG_DIR}/myapp-access.log combined </VirtualHost>
3. 启用配置并重启Apache
执行命令启用这个虚拟主机配置:
sudo a2ensite Myapp.conf
然后重启Apache让配置生效:
sudo systemctl restart apache2
额外要确认的几个点
- 先在服务器本地测试Spring Boot应用:用
curl http://localhost:8090确认应用能正常响应 - 检查Ubuntu防火墙规则:执行
sudo ufw status,确保80端口(HTTP)是允许的(现在通过Apache的80端口访问,8090只需要允许本地访问,甚至可以删掉外部的8090规则,更安全) - 云服务器用户还要确认安全组开了80端口的入站规则
配置完成后,你直接访问your-server-ip或者你的域名就能看到Spring Boot应用了,不用再加8090端口啦。
内容的提问来源于stack exchange,提问作者qz_99
相关产品推荐
相关产品推荐

