centos7上用nginx部署前後端分離專案
阿新 • • 發佈:2021-10-15
前言
使用nginx部署前後分離專案,後端為go,前端Vue,部署的伺服器環境是CentOS7
整個流程大抵分為三個塊:
1.安裝需要的依賴環境
2.安裝用來部署的nginx
3.改nginx配置部署專案
1、依賴環境問題
1.gcc安裝
yum install gcc-c++
# 安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝
2.PCRE pcre-devel 安裝
yum install -y pcre pcre-devel # nginx 的 http 模組使用 pcre 來解析正則表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫
3.zlib 安裝
yum install -y zlib zlib-devel
# nginx 使用 zlib 對 http 包的內容進行 gzip
4.OpenSSL 安裝
yum install -y openssl openssl-devel
2、安裝Nginx
1.安裝包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
# 解壓
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
2.配置
./configure
3.編譯安裝
make make install # 安裝路徑。whereis nginx
4.啟動、停止nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
5.端口占用錯誤解決
yum install net-tools
6.配置開機自啟動
vi /etc/rc.local
# 新增
/usr/local/nginx/sbin/nginx
# 設定許可權
chmod 755 rc.local
3.部署前後分離專案
1.上傳需要部署的專案
前端專案需要用 npm run build 打包 找到目錄下的 dist 資料夾,上傳到需要部署的伺服器 後端專案直接上傳,記得啟動,可編譯的專案編譯後啟動。
2.開啟配置檔案
vi /usr/local/nginx/conf/nginx.conf
3.配置裡面的server
daemon on;
worker_processes 50;
#error_log /dev/stdout warn;
error_log /var/log/nginx/error.log error;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# See http://licson.net/post/optimizing-nginx-for-large-file-delivery/ for more detail
# This optimizes the server for HLS fragment delivery
sendfile off;
#tcp_nopush on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log /dev/stdout combined;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 10m;
server {
listen 80;
server_name xxx.xxx.xx.xxx;
# Uncomment these lines to enable SSL.
# Update the ssl paths with your own certificate and private key.
# listen 443 ssl;
# ssl_certificate /opt/certs/example.com.crt;
# ssl_certificate_key /opt/certs/example.com.key;
location / {
root /usr/loacl/xxx; # 前端的dist檔案需要和nginx配置路徑相同
try_files $uri $uri/ /index.html;
index index.html;
}
# 新增攔截路徑和代理地址
location /api/ {
# 新增頭部資訊
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://xxx.xxx.xxx.xxx:xxxx/;
}
}
}
4.檢查配置檔案是否正確
nginx -t
5.重啟nginx
./nginx -s reload
6.配置注意事項
# 讓nginx攔截所有帶/api/的請求,轉發到後端伺服器,就可以解決跨域的問題
# location如果一個特定的url 要使用別名,不能用root,alias指定的目錄是準確的,root是指定目錄的上級目錄
# 注意:使用代理地址時末尾記得加上斜槓"/"。
# 這裡用的root使用者,如果用其他使用者,可能訪問靜態資源會被禁止訪問(403),需要“chmod 755 靜態資源路徑 ” 授權,授權的時候要逐級授權,