需求是这样的 后端的ip和apache2服务器是同一ip只是端口号不同, 前端本地远程调用后端api是没有问题的,把vue项目打包部署到服务器时,因端口不同出现了跨域问题
我 是个前端开发人员 对于后端服务器部署这块是个小白,所以解决这个问题折腾的时间比较久,在此记录下自己的成长
1.apache2服务器已安装
2. 启用代理
sudo a2enmod proxy
sudo a2enmod proxy_http
3. 配置反向代理
sudo nano /etc/apache2/sites-available/000-default.conf
在 <VirtualHost *:80> </VirtualHost>中添加如下信息
ServerName a.a.a.a
ProxyRequests Off
ProxyPass /api http://a.a.a.a:8080
ProxyPassReverse /api http://a.a.a.a:8080
<Proxy *>
Order Deny,Allow
Allow from All
</Proxy>
注意:
1,a.a.a.a是代理服务的IP或者域名,
2,/api是自定义的一个标识,前端传的时候也要拼上这个标识,如前端发送请求是http://a.com/api/xxx/xxx, /api必须跟在域名或IP后
3,ProxyPass /api 被代理的网站(ProxyPassReverse /api 被代理的网站)到这里意思就是把前端请求连接中的/api直接换成空格后面的域名或IP,从而解决跨域问题
最后一步 配置完成后 重启服务
sudo service apache2 restart
#这是在基于System V的系统(例如,Debian,Ubuntu)中重启Apache服务的命令。
#或
sudo systemctl restart apache2
#这是在基于systemd的系统(例如,Fedora,CentOS)中重启Apache服务的命令。