前后端分离部署采用前端静态资源部署在服务器,然后需要nginx
充当我们的前端静态文件代理服务器,然后后端使用jar包方式部署,还需要nginx
的反向代理解决跨域问题,因为前后端分离项目前后端运行在不同的端口上就需要解决跨域的问题,需要在nginx里进行配置代理转发。
1.在nginx.conf配置文件中配置:
在http {
}中添加:
upstream java.project{ //搭集群用
server 192.168.16.107:8081 weight=5;
server 192.168.16.108:8080 weight=3;
}
server {
listen 80;
server_name 192.168.16.107;
location / {
proxy_pass http://java.project;
proxy_redirect default;
}
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|html) {
#所有静态文件直接读取硬盘
root /etc/dist/;
expires 30d; #缓存30天
}
}
fastdfs映射示例配置:
location ~/group1/M00 {
root /home/fastdfs/storage/data; fastdfs地址
ngx_fastdfs_module;
} location / {
index index.html index.htm;
proxy_pass http://192.168.101.56:56010/; 网关地址
}
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|html) {
root /root/dist/;
expires 30d;
}
// 访问的是80端口,nginx会将请求代理转发到8081端口,解决跨域问题即设置代理转发
注意点:
// 1.访问ip报403:需要将配置文件中user nginx;改为user root;
// 2.访问ip报404:原因是由于nginx装在了docker里面,nginx配置的访问静态资源是在宿主机的目录下,而nginx容器只会在容器目录下查找,所以会找不到资源,就会报404
解决方案:将存放静态资源的宿主机目录与容器目录进行挂载,即可将宿主机的目录同步到容器内部,这样就可以访问到资源了
命令:docker run -p 80:80 --name nginx -v /root/nginx:/etc/nginx -v /root/dist:/etc/dist --privileged=true nginx,前面-v挂载的是配置文件,后面-v挂载的是静态资源目录,容器中没有dist目录挂载后会自动生成。
2.在启动jar包的前提下访问192.168.16.107/index.html即可访问成功