Nginx主要用來幹什麼

2021-08-21 17:14:42 字數 2167 閱讀 1326

1、靜態http伺服器

首先,nginx是乙個http伺服器,可以將伺服器上的靜態檔案(如html、)通過http協議展現給客戶端。

配置:server

}

2、反向**伺服器

什麼是反向**?

客戶端本來可以直接通過http協議訪問某**應用伺服器,**管理員可以在中間加上乙個nginx,客戶端請求nginx,nginx請求應用伺服器,然後將結果返回給客戶端,此時nginx就是反向**伺服器。

配置:server

}

既然伺服器可以直接http訪問,為什麼要在中間加上乙個反向**,不是多此一舉嗎?反向**有什麼作用?繼續往下看,下面的負載均衡、虛擬主機等,都基於反向**實現,當然反向**的功能也不僅僅是這些。

3、負載均衡

當**訪問量非常大,**站長開心賺錢的同時,也攤上事兒了。因為**越來越慢,一台伺服器已經不夠用了。於是將同乙個應用部署在多台伺服器上,將大量使用者的請求分配給多台機器處理。同時帶來的好處是,其中一台伺服器萬一掛了,只要還有其他伺服器正常執行,就不會影響使用者使用。

nginx可以通過反向**來實現負載均衡。

配置 

server192.168.20.1:8080; # 應用伺服器1

server192.168.20.2:8080; # 應用伺服器2

}

server

}

以上配置會將請求輪詢分配到應用伺服器,也就是乙個客戶端的多次請求,有可能會由多台不同的伺服器處理。可以通過ip-hash的方式,根據客戶端ip位址的hash值將請求分配給固定的某乙個伺服器處理。

配置:

ip_hash; # 根據客戶端ip位址hash值將請求分配給固定的乙個伺服器處理

server192.168.20.1:8080;

server192.168.20.2:8080;

}

server

}

另外,伺服器的硬體配置可能有好有差,想把大部分請求分配給好的伺服器,把少量請求分配給差的伺服器,可以通過weight來控制。 

配置:

server192.168.20.1:8080weight=3; # 該伺服器處理3/4請求

server192.168.20.2:8080; # weight預設為1,該伺服器處理1/4請求

}

server

}

4、虛擬主機

有的**訪問量大,需要負載均衡。然而並不是所有**都如此出色,有的**,由於訪問量太小,需要節省成本,將多個**部署在同一臺伺服器上。

例如將www.aaa.com和www.bbb.com兩個**部署在同一臺伺服器上,兩個網域名稱解析到同乙個ip位址,但是使用者通過兩個網域名稱卻可以開啟兩個完全不同的**,互相不影響,就像訪問兩個伺服器一樣,所以叫兩個虛擬主機。

配置:server

server

}

server

}

在伺服器8080和8081分別開了乙個應用,客戶端通過不同的網域名稱訪問,根據server_name可以反向**到對應的應用伺服器。

虛擬主機的原理是通過http請求頭中的host是否匹配server_name來實現的,有興趣的同學可以研究一下http協議。

另外,server_name配置還可以過濾有人惡意將某些網域名稱指向你的主機伺服器。

5、fastcgi

nginx本身不支援php等語言,但是它可以通過fastcgi來將請求扔給某些語言或框架處理(例如php、python、perl)。

server

}

配置中將.php結尾的請求通過fashcgi交給php-fpm處理,php-fpm是php的乙個fastcgi管理器。有

Nginx應用場景,Nginx是用來幹什麼的

反向 負載均衡 未完待續,不定時更新 這篇文章不涉及具體配置方法 工作中經常用到nginx,經常看到什麼正向 反向 負載均衡,靜態資源快取之類的名詞,這篇部落格主要介紹一下什麼時候會用到nginx,用到它的哪種功能。緩解後台伺服器壓力,將靜態資源在不經過tomcat等容器的情況下,返回給客戶端,減少...

Python可以用來幹什麼?

在我看來,基本上可以不負責任地認為,python 可以做任何事情。無論是從入門級選手到專業級選手都在做的爬蟲,還是web 程式開發 桌面程式開發還是科學計算 影象處理,python都可以勝任。python為我們提供了非常完善的基礎 庫,覆蓋了網路 檔案 gui 資料庫 文字等大量內容,被形象地稱作 ...

gulp是用來幹什麼的?(概念)

當我們在使用gulp的時候,gulp到底用來幹什麼呢?編譯 sass 合併優化壓縮 css 校驗壓縮 js 優化新增檔案指紋 md5 元件化頭部底部 include html 實時自動重新整理 壓縮靜態資源 變更靜態資源 給靜態資源新增 md5 修改預處理樣式後自動編譯 sass,less 合併雪碧...