Windows配置Nginx實現前后端分離部署


環境

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使用的是內置的tomcatvue部署在了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 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;
        #}
    }
  • 效果如下所示:
    在這里插入圖片描述

后記

程序發布時前后端用的都是httpsspringboot用內置的tomcatvue部署在tomcat里,因為ssl證書都是自制的,瀏覽器並不認可,會出現連接不是私密連接的驗證,這樣就導致了一個問題,訪問前端登錄頁驗證一次私密連接,但登錄頁上的后台驗證碼卻刷不出來,瀏覽器對后端的連接也進行了攔截,瀏覽器不信任證書可以把證書導入瀏覽器來解決,但因為太麻煩用nginx做了個轉發解決了這無厘頭問題

.end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM