前后端分離部署采用前端靜態資源部署在服務器,然后需要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即可訪問成功
