日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx实现静态代理,负载均衡,前后端分离

發(fā)布時間:2025/4/16 Nginx 118 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx实现静态代理,负载均衡,前后端分离 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Nginx不單可以作為強(qiáng)大的web服務(wù)器,也可以作為一個反向代理服務(wù)器,而且nginx還可以按照調(diào)度規(guī)則實(shí)現(xiàn)動態(tài)、靜態(tài)頁面的分離,可以按照輪詢、ip哈希、URL哈希、權(quán)重等多種方式對后端服務(wù)器做負(fù)載均衡,同時還支持后端服務(wù)器的健康檢查。

如果只有一臺服務(wù)器時,這個服務(wù)器掛了,那么對于網(wǎng)站來說是個災(zāi)難.因此,這時候的負(fù)載均衡就會大顯身手了,它會自動剔除掛掉的服務(wù)器。

本博客的目的:提供由Nginx實(shí)現(xiàn)前后端分離和負(fù)載均衡的思路,不提供具體實(shí)現(xiàn)的步驟,如果不是很理解前后端分離和負(fù)載均衡可以參考博客前后端分離和負(fù)載均衡

一:靜態(tài)代理

把所有靜態(tài)資源的訪問改為訪問nginx,而不是訪問tomcat,這種方式叫靜態(tài)代理。因?yàn)閚ginx更擅長于靜態(tài)資源的處理,性能更好,效率更高。所以在實(shí)際應(yīng)用中,我們將靜態(tài)資源比如圖片、css、html、js等交給nginx處理,而不是由tomcat處理。


實(shí)現(xiàn)靜態(tài)代理有兩種方法:

方式一 在nginx.conf的location中配置靜態(tài)資源的后綴

根據(jù)擴(kuò)展名進(jìn)行攔截:

整個配置表示以 .后面括號里面的這些后綴結(jié)尾的文件都由nginx處理放置靜態(tài)資源的目錄,要注意一下目錄權(quán)限問題,如果權(quán)限不足,給目錄賦予權(quán)限;否則會出現(xiàn)403錯誤 chmod 755

方式二 在nginx.conf的location中配置靜態(tài)資源所在目錄實(shí)現(xiàn)

由于 /opt/static為我們規(guī)定的靜態(tài)資源訪問的根路徑。但是項(xiàng)目運(yùn)行起來有一個虛擬目錄,所以真正的靜態(tài)資源要放在:/opt/static/項(xiàng)目的虛擬目錄文件下面。


案例: 通過nginx訪問上面myweb案例中的圖片

? 修改nginx.conf文件,在location中配置對靜態(tài)資源的攔截,如果是靜態(tài)資源,就交給nginx處理,使攔截靜態(tài)文件后綴名的方式。

? 重啟nginx

? 瀏覽器訪問nginx服務(wù)器,進(jìn)行測試,發(fā)現(xiàn)圖片無法加載

? 右鍵圖片,查看圖片的地址為http://192.168.235.128/myweb/image/001.jpg,因?yàn)槲覀冊趎ginx中配置了對.jpg的攔截,所以請求會交給nginx服務(wù)器進(jìn)行處理。
根據(jù)ip + port等于root的原則,我們會去/opt/static/myweb目錄下找資源,所以在/opt/static下創(chuàng)建myweb目錄,并放入image目錄及圖片,為了和tomcat上的圖片區(qū)分,我們這里圖片的內(nèi)容發(fā)生了變化。

? 瀏覽器訪問nginx訪問器,進(jìn)行測試 ,圖片訪問正常,而且訪問的是nginx上的圖片

? 將nginx.conf中的location攔截方式修改為攔截靜態(tài)文件目錄的方式

? 重啟nginx服務(wù)器,通過瀏覽器訪問nginx服務(wù)器,進(jìn)行測試,訪問正常,但是訪問的是tomcat服務(wù)器下的圖片

二:負(fù)載均衡

在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺機(jī)器對外提供集中式服務(wù)。隨著業(yè)務(wù)量的增大,我們一臺服務(wù)器不夠用,此時就會把多臺機(jī)器組成一個集群對外提供服務(wù),但是,我們網(wǎng)站對外提供的訪問入口通常只有一個,比如 www.web.com。那么當(dāng)用戶在瀏覽器輸入www.web.com進(jìn)行訪問的時候,如何將用戶的請求分發(fā)到集群中不同的機(jī)器上呢,這就是負(fù)載均衡要做的事情。
負(fù)載均衡通常是指將請求"均勻"分?jǐn)偟郊褐卸鄠€服務(wù)器節(jié)點(diǎn)上執(zhí)行,這里的均勻是指在一個比較大的統(tǒng)計(jì)范圍內(nèi)是基本均勻的,并不是完全均勻。

Nginx通過在nginx.conf文件進(jìn)行配置即可實(shí)現(xiàn)負(fù)載均衡 。


配置如下:(配置2步即可)

A、 在http模塊加上upstream配置
upstream www.myweb.com {
server 127.0.0.1:9100 weight=3;
server 127.0.0.1:9200 weight=1; }

其中weight=1表示權(quán)重,用于后端服務(wù)器性能不均的情況,訪問比率約等于權(quán)重之比,權(quán)重越大訪問機(jī)會越多,upstream是配置nginx與后端服務(wù)器負(fù)載均衡非常重要的一個模塊,并且它還能對后端的服務(wù)器的健康狀態(tài)進(jìn)行檢查,若后端服務(wù)器中的一臺發(fā)生故障,則前端的請求不會轉(zhuǎn)發(fā)到該故障的機(jī)器.

B、 在server模塊里添加location,并配置
proxy_pass location /myweb {
proxy_pass http://www.myweb.com;
}

其中 www.myweb.com 字符串要和 upstream 后面的字符串相等

案例:將一個項(xiàng)目myweb.war部署到兩臺不同的tomcat上,通過nginx實(shí)現(xiàn)負(fù)載均衡。

1、 在linux服務(wù)器/usr/local目錄下,拷貝兩臺新的tomcat

2、將這兩臺tomcat服務(wù)器webapps目錄下沒用的項(xiàng)目刪掉

3、 修改其中一臺tomcat9100的端口號為9100 ,另一臺tomcat的端口號改為9200.

4.將myweb.war上傳到兩臺tomcat服務(wù)器的webapps目錄下

  • 啟動兩臺tomcat

  • 6.瀏覽器直接訪問兩臺tomcat,進(jìn)行測試


    但是我們網(wǎng)站一般對外之后提供一個入口地址,所以這個時候可以使用nginx進(jìn)行負(fù)載。

    7、 配置nginx

    ? 在http模塊上加

    ? 在server模塊加

    8、 重啟Nginx

    9、 瀏覽器直接訪問nginx進(jìn)行測試


    三:前后端分離

    Nginx的負(fù)載均衡和靜態(tài)代理結(jié)合在一起,我們可以實(shí)現(xiàn)動靜分離,這是實(shí)際應(yīng)用中常見的一種場景。

    動態(tài)資源,如jsp由tomcat或其他web服務(wù)器完成
    靜態(tài)資源,如圖片、css、js等由nginx服務(wù)器完成

    它們各司其職,專注于做自己擅長的事情
    前后端分離充分利用了它們各自的優(yōu)勢,從而達(dá)到更高效合理的架構(gòu)。

    架構(gòu)圖

    整個架構(gòu)中,一個nginx負(fù)責(zé)負(fù)載均衡,兩個nginx負(fù)責(zé)靜態(tài)代理。Nginx在一臺Linux上安裝一份,可以通過不同的nginx.conf配置文件啟動多個Nginx,每個Nginx的配置文件中不一樣即可。

    實(shí)現(xiàn)步驟

    1.拷貝兩份nginx配置文件實(shí)現(xiàn)靜態(tài)代理

    2.修改新拷貝的nginx81.conf和nginx82.conf配置文件
    ? Nginx81.conf端口號,因?yàn)檫@兩個機(jī)器只需要做靜態(tài)代理,所以刪除掉負(fù)載均衡的配置

    ? Nginx82.conf端口號,因?yàn)檫@兩個機(jī)器只需要做靜態(tài)代理,所以刪除掉負(fù)載均衡的配置

    ? 靜態(tài)代理的配置

    3.負(fù)載均衡Nginx配置nginx.conf配置文件

    A.動態(tài)資源的負(fù)載均衡
    在http模塊加上upstream配置
    upstream www.myweb.com {
    server 127.0.0.1:9100 weight=5;
    server 127.0.0.1:9200 weight=2;
    }
    在server模塊里添加location,并配 proxy_pass
    location /myweb {
    proxy_pass http://www.myweb.com;
    }

    B.靜態(tài)資源的負(fù)載均衡
    upstream static.myweb.com {
    server 127.0.0.1:81 weight=1;
    server 127.0.0.1:82 weight=1;
    }

    location ~ .*/(css|js|img|images) {
    proxy_pass http://static.myweb.com;
    }

    4.啟動三臺nginx服務(wù)器,啟動兩臺tomcat服務(wù)器

    5.瀏覽器輸入http://192.168.235.128/myweb/進(jìn)行測試
    關(guān)閉掉一臺nginx靜態(tài)代理服務(wù)器
    關(guān)閉掉一臺tomcat服務(wù)器

    總結(jié)

    以上是生活随笔為你收集整理的Nginx实现静态代理,负载均衡,前后端分离的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。