標籤:意思 不用 htm set conf for 工作原理 反向 Proxy服務 博文
前幾天工作中和前端部門的同學配合時遇到一個問題:前端同學調用伺服器端介面時,伺服器端介面擷取不到cookie。項目是前後端分離,伺服器端使用spring mvc提供java介面,前端使用nginx做反向 Proxy解決跨域問題,前端架構使用vue。
當時由於對ngix不太瞭解,只知道前端同學使用nginx做反向 Proxy時,在測試環境配置的是ip+連接埠號碼的方式提供者,於是就誤以為是沒有通過網域名稱提供者,所以伺服器端介面才擷取不到cookie。還理所當然的找前端同學“糾正錯誤”,經過一番排查,最終發現問題的罪魁禍首是vue,vue的工作原理是首頁頁面載入和重新整理頁面是會通過前端虛擬伺服器和後端伺服器介面互動,這時是伺服器端之間的介面調用,前端同學沒有在前端伺服器向後端伺服器介面正確的發送cookie,導致介面擷取不到cookie。
現在想想真的很汗顏,真是無知者無畏,所以就決定要學一學Nginx。這篇文章就記錄一下我的一個入門實驗,實驗目的:在本機配置一個nginx反向 Proxy伺服器,監聽8089連接埠。達到訪問http://localhost:8089,會通過nginx代理,訪問http://localhost:8080的目的。
環境:32位windows、tomcat 、Spring MVC
前期準備:安裝tomcat,並建立Spring MVC項目,訪問http://localhost:8080/,能夠開啟Sping MVC項目對應的action,具體做法這裡不多說,詳情請見我的博文:http://www.cnblogs.com/cs-js/p/7295414.html
第一步:安裝Nginx
下載連結:https://kevinworthington.com/nginx-for-windows/
我本機安裝在了C:\nginx目錄下,安裝完成後,可以在檔案夾裡面看到Strat-nginx和Stop-nginx兩個檔案,一個是啟動nginx服務,一個是關閉nginx服務。另外,還可以看到conf這個檔案夾,ngix的設定檔nginx.conf就是放在這個檔案夾裡面。配置反向 Proxy伺服器只需要在設定檔裡增加幾個配置就可以了。
第二步:配置nginx
開啟nginx.conf設定檔,會看到在http節點,在http節點下有一個預設的server子節點,我們不用去管它,要做的就是在http節點下新增一個server節點,具體的配置如下:
#虛擬機器主機的配置 server { #監聽連接埠 listen 8090; #網域名稱可以有多個,用空格隔開,代理訪問的真實伺服器 server_name localhost:8080; error_page 404 /404.html; charset utf-8; #後端的Web伺服器可以通過X-Forwarded-For擷取使用者真實IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; #以下是一些反向 Proxy的配置 #反向 Proxy時候,設定nginx將網域名稱攜帶到tomcat伺服器 proxy_set_header Host $host; #允許用戶端請求的最大單檔案位元組數 client_max_body_size 10m;#對 "/" 啟用反向 Proxy location / { #配置代理訪問的真實uri proxy_pass http://localhost:8080; } }
這樣,就配置了一個簡單的反向 Proxy伺服器。是不是很簡單,這裡需要重點解釋一下server節點和它裡面的各個配置項的含義:
server:配置一個虛擬機器主機,一個server介面可以監聽一個連接埠,nginx可以配置監聽多個連接埠,做多個反向 Proxy,每個反向 Proxy都需要配置一個server節點。
listen:監聽的連接埠,就是訪問的nginx伺服器的連接埠。
server_name:真實伺服器的名稱,可以配成ip+連接埠或者網域名稱+連接埠
location:把不同方式的請求定位到不同的處理方式上,這裡我配置的是“/”,意思就是配置成nginx對"/"這種請求做轉寄
proxy_pass:轉寄到真實伺服器的uri。這裡就是攔截http:localhost:8089/,然後轉寄到http://localhost:8080
總結,nginx的使用很簡單,只需要簡單的配置就可以完成高效能的反向 Proxy和負載平衡功能,有興趣的同學可以在網上深入研究一下,然後把好的資源共用一下,我的郵箱[email protected]。
32位windows下Nginx的簡單使用及配置