環境
Windows 10
SpringBoot 1.5.20
Vue 2.5.2
Nginx 1.12.2
OpenSSL-Win64
下載
Nginx
官網下載:http://nginx.org/en/download.html
解壓如下所示:
運行
cmd
切換到nginx
目錄,執行命令:
start nginx
- 瀏覽器地址欄輸入網址
http://localhost
,出現以下頁面說明啟動成功
前后端分離配置
nginx.conf
配置
我們可以修改nginx
的配置文件nginx.conf
達到訪問nginx
代理服務器時跳轉到指定服務器的目的,即通過proxy_pass
配置請求轉發地址,這里SpringBoot
使用的是內置的tomcat
,vue
部署在了tomcat
里,如下代碼所示,后台的端口為31096
,前端的端口為8080
,在這里只配置監聽80
端口,因為前端訪問路徑都帶了項目名稱,如果是前端路徑則轉發到前端工程,其余轉發到后端;當然,也可以配置兩個端口分別監聽前后端的端口來實現前后端分離部署。
server {
listen 80;
server_name localhost;
location / {
# root html;
# index index.html index.htm;
proxy_pass https://127.0.0.1:31096;
}
# app為前端項目名稱,帶app的訪問路徑都是訪問前端,故此將請求轉到前端工程
location ^~ /app/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- 重啟
nginx
nginx -s reload
- 訪問
http://localhost/項目名
,這樣就簡單的實現了一個前后端分離部署
配置https
- 下載
OpenSSL
官網下載:http://slproweb.com/products/Win32OpenSSL.html
- 配置環境變量
- 生成
https
證書
openssl genrsa -des3 -out server.key 1024
- 創建
csr
證書
openssl req -new -key server.key -out server.csr
- 刪除密碼
復制server.key
並重命名server.key.org
openssl rsa -in server.key.org -out server.key
- 生成
crt
證書
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 結果如下:
- 修改
nginx
下的nginx.conf
配置文件
server {
listen 8443; # 站點監聽端口
server_name 127.0.0.1:8443; # 配置的https的域名
ssl on; # 開啟ssl
root html;
index index.html index.htm;
ssl_certificate C://Users//Coisini//ssl//server.crt; # 證書的crt文件所在目錄
ssl_certificate_key C://Users//Coisini//ssl//server.key; # 證書key文件所在目錄
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://127.0.0.1:31096;
}
location ^~ /app/ {
#root html;
#index index.html index.htm;
proxy_pass http://127.0.0.1:8080;
}
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
#root html;
#}
}
- 效果如下所示:
后記
程序發布時前后端用的都是https
,springboot
用內置的tomcat
,vue
部署在tomcat
里,因為ssl
證書都是自制的,瀏覽器並不認可,會出現連接不是私密連接的驗證,這樣就導致了一個問題,訪問前端登錄頁驗證一次私密連接,但登錄頁上的后台驗證碼卻刷不出來,瀏覽器對后端的連接也進行了攔截,瀏覽器不信任證書可以把證書導入瀏覽器來解決,但因為太麻煩用nginx
做了個轉發解決了這無厘頭問題
.end