今天是劉小愛自學Java的第142天。
感謝你的觀看,謝謝你。
學習計劃安排,主要解決兩個問題:
一個是使用SwitchHosts解決域名問題。
一個nginx的使用,解決端口問題。
一、SwitchHosts解決域名
要知道在實際開發中會有不同的環境。
開發環境:自己的電腦。
測試環境:提供給測試人員使用的環境。
預發布環境:數據是和生成環境的數據一致,運行最新的項目代碼進去測試。
生產環境:項目最終發布上線的環境。
如果不同環境使用不同的ip去訪問,可能會出現一些問題,所以要統一環境。
1統一環境
現在條件有限,不可能說去注冊一個域名來使用,因此我們可以偽造本地的hosts文件。
首先找到電腦中的hosts文件:
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:我們的后臺系統地址。
這樣的話就能解決一個問題,以后在瀏覽器上訪問設定的域名即可,而不是直接使用ip。
一個域名會被解析為一個或多個ip,瀏覽器會在hosts文件中查找域名映射的ip地址。
3SwitchHosts的使用
每次都要去找到host文件,路徑繁瑣,非常麻煩,所以可以使用SwitchHosts來完成:
注意,再次強調:
真正地做項目會去買一個域名,配置好后,所有人通過該域名訪問即可。
但是現在沒有買域名,所以使用SwitchHosts來自己騙自己,目的是知道有這回事。
二、nginx解決端口問題
雖然域名解決了,但是現在如果我們要訪問,還得自己加上端口9001。
那么問題來了,比如說我們去訪問淘寶,它怎么就不需要加上一個端口號呢?
所以我們希望實現的是只需要域名就能直接實現訪問:manage.liuxiaoai.com。
如果不輸入端口,瀏覽器會將其默認設成80,那如何才能把請求轉移到9001端口呢?
這里就要用到反向代理工具:Nginx
①nginx作為web服務器
Web服務器分2類:
web應用服務器,如:Tomcat。
web服務器,如:Apache 服務器,Nginx
它們的區分在于:
Nginx不能解析jsp等頁面,只能處理js、css、html等靜態資源。
但是Nginx的并發能力要遠高于Tomcat這些web應用服務器。
所以項目中使用Nginx + Tomcat兩者結合。
②nginx作為反向代理服務器
什么是反向代理?
用一臺服務器代理真實服務器,用戶訪問的不再是真實服務器而是代理服務器。
利用反向代理,就可以解決端口問題:
注意:瀏覽器中輸入任意路徑如果沒有指定端口,瀏覽器會默認配置端口為80。
在nginx中配置好反向代理的規則:
根據不同的請求交給不同的真實服務器處理。
當請求到達nginx,nginx會根據已經定義的規則進行請求的轉發,從而實現反向代理。
③nginx安裝和使用
安裝非常簡單,網上一堆資料,不再贅述,我們在本地安裝一臺nginx,目錄結構如下:
nginx可以直接點擊,但是會閃一下導致以為它沒啟動,實際上它已經后臺啟動了。
這樣的壞處在于如果多次點擊會啟動多個nginx服務器。
所以一般會通過命令行來啟動,命令如下:
啟動:start nginx.exe
停止:nginx.exe -s stop
重新加載:nginx.exe -s reload
其中在conf文件夾中可以完成配置:
在瀏覽器上輸入manage.liuxiaoai.com,因為沒有加端口,瀏覽器會默認配置端口80。
而我們在nginx中配置的監聽端口又是80,所以會訪問到nginx服務器。
nginx服務器就會根據配置,反向代理到我們設置本地路徑+9001端口。
三、實現流程分析
現在實現了域名訪問網站,分析一遍流程:
①瀏覽器準備發起請求,訪問對應域名,但需要進行域名解析。
②本地域名解析,因為修改了hosts,所以解析成功,得到地址:127.0.0.1,請求被發往解析得到的ip,并且默認使用80端口。
③nginx監聽80端口,因此捕獲這個請求。
④nginx中配置了反向代理規則,將manage.liuxiaoai.com代理到了本地ip+9001端口。
⑤后臺系統端口是9001,得到請求并處理,完成后將響應返回到nginx服務器。
⑥nginx將得到的結果返回到瀏覽器。
最后
謝謝你的觀看。
如果可以的話,麻煩幫忙點個贊,謝謝你。