【微服務】142:nginx反向代理的使用

今天是劉小愛自學Java的第142天。

感謝你的觀看,謝謝你。

image

學習計劃安排,主要解決兩個問題:

  • 一個是使用SwitchHosts解決域名問題。

  • 一個nginx的使用,解決端口問題。

一、SwitchHosts解決域名

要知道在實際開發中會有不同的環境。

  • 開發環境:自己的電腦。

  • 測試環境:提供給測試人員使用的環境。

  • 預發布環境:數據是和生成環境的數據一致,運行最新的項目代碼進去測試。

  • 生產環境:項目最終發布上線的環境。

如果不同環境使用不同的ip去訪問,可能會出現一些問題,所以要統一環境。

1統一環境

現在條件有限,不可能說去注冊一個域名來使用,因此我們可以偽造本地的hosts文件。

首先找到電腦中的hosts文件:

image
  • Windows下的hosts文件地址:C:/Windows/System32/drivers/etc/hosts

  • Linux下的hosts文件所在路徑: /etc/hosts

然后再修改本地的hosts為:

  • 127.0.0.1 api.liuxiaoai.com :我們的網關Zuul。

  • 127.0.0.1 manage.liuxiaoai.com:我們的后臺系統地址。

image

這樣的話就能解決一個問題,以后在瀏覽器上訪問設定的域名即可,而不是直接使用ip。

一個域名會被解析為一個或多個ip,瀏覽器會在hosts文件中查找域名映射的ip地址。

3SwitchHosts的使用

每次都要去找到host文件,路徑繁瑣,非常麻煩,所以可以使用SwitchHosts來完成:

image

注意,再次強調:

真正地做項目會去買一個域名,配置好后,所有人通過該域名訪問即可。

但是現在沒有買域名,所以使用SwitchHosts來自己騙自己,目的是知道有這回事。

二、nginx解決端口問題

雖然域名解決了,但是現在如果我們要訪問,還得自己加上端口9001。

那么問題來了,比如說我們去訪問淘寶,它怎么就不需要加上一個端口號呢?

所以我們希望實現的是只需要域名就能直接實現訪問:manage.liuxiaoai.com。

如果不輸入端口,瀏覽器會將其默認設成80,那如何才能把請求轉移到9001端口呢?

這里就要用到反向代理工具:Nginx

image

①nginx作為web服務器

Web服務器分2類:

  • web應用服務器,如:Tomcat。

  • web服務器,如:Apache 服務器,Nginx

它們的區分在于:

  • Nginx不能解析jsp等頁面,只能處理js、css、html等靜態資源。

  • 但是Nginx的并發能力要遠高于Tomcat這些web應用服務器。

所以項目中使用Nginx + Tomcat兩者結合。

②nginx作為反向代理服務器

什么是反向代理?

用一臺服務器代理真實服務器,用戶訪問的不再是真實服務器而是代理服務器。

利用反向代理,就可以解決端口問題:

image

注意:瀏覽器中輸入任意路徑如果沒有指定端口,瀏覽器會默認配置端口為80。

在nginx中配置好反向代理的規則:

根據不同的請求交給不同的真實服務器處理。

當請求到達nginx,nginx會根據已經定義的規則進行請求的轉發,從而實現反向代理。

③nginx安裝和使用

安裝非常簡單,網上一堆資料,不再贅述,我們在本地安裝一臺nginx,目錄結構如下:

image

nginx可以直接點擊,但是會閃一下導致以為它沒啟動,實際上它已經后臺啟動了。

這樣的壞處在于如果多次點擊會啟動多個nginx服務器。

所以一般會通過命令行來啟動,命令如下:

  • 啟動:start nginx.exe

  • 停止:nginx.exe -s stop

  • 重新加載:nginx.exe -s reload

其中在conf文件夾中可以完成配置:

image

在瀏覽器上輸入manage.liuxiaoai.com,因為沒有加端口,瀏覽器會默認配置端口80。

而我們在nginx中配置的監聽端口又是80,所以會訪問到nginx服務器。

nginx服務器就會根據配置,反向代理到我們設置本地路徑+9001端口。

三、實現流程分析

現在實現了域名訪問網站,分析一遍流程:

image

①瀏覽器準備發起請求,訪問對應域名,但需要進行域名解析。

②本地域名解析,因為修改了hosts,所以解析成功,得到地址:127.0.0.1,請求被發往解析得到的ip,并且默認使用80端口。

③nginx監聽80端口,因此捕獲這個請求。

④nginx中配置了反向代理規則,將manage.liuxiaoai.com代理到了本地ip+9001端口。

⑤后臺系統端口是9001,得到請求并處理,完成后將響應返回到nginx服務器。

⑥nginx將得到的結果返回到瀏覽器。

最后

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。