Angular+Spring Boot部署:Apache2配置致前后端交互异常排查
问题分析与解决方案
核心问题
- 初始配置未设置反向代理,前端请求
/api路径时,Apache会将其当作静态资源在前端目录中查找,导致404错误。 - 后续全量代理
/到后端的配置,会把所有请求(包括前端静态资源)都转发到Spring Boot服务,而后端没有前端文件,因此返回503;同时AH00558警告是因为虚拟主机配置缺少ServerName,Apache无法明确默认主机标识。
解决步骤
1. 启用Apache反向代理模块
首先需要确保Apache的代理相关模块已启用,这是实现反向代理的前提:
sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
执行完成后重启Apache:
sudo systemctl restart apache2
2. 修改虚拟主机配置
编辑/etc/apache2/sites-available/mypersonaldomain.com.conf,配置仅代理API路径,保留前端静态资源的正常访问,同时添加ServerName解决警告:
<VirtualHost *:80> ServerName 192.168.1.85 ServerAdmin admin@mypersonaldomain.com DocumentRoot /var/www/mypersonaldomain.com/html # 将/api开头的请求转发到Spring Boot后端 ProxyPass /api http://localhost:8090/api ProxyPassReverse /api http://localhost:8090/api ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
ProxyPassReverse的作用是修正后端返回的响应头(比如重定向地址),确保前端拿到的是正确的外部访问路径,而非后端的localhost地址。ServerName设置为你的树莓派IP(或域名),消除AH00558警告。
3. 验证配置并重启Apache
先检查配置是否合法:
sudo apache2ctl configtest
如果输出Syntax OK,则重启Apache生效:
sudo systemctl restart apache2
4. 确认前端请求路径
确保Angular前端的API请求使用相对路径(例如/api/authentication/login),而非带端口的绝对路径,这样请求会自动通过Apache的代理转发到后端。
内容的提问来源于stack exchange,提问作者Citanionarrei
相关产品推荐
相关产品推荐

