一文帶你搞懂什么是Nginx服務器
目錄
- 一、Nginx是什么?
- 二、Nginx的反向代理(擴展:正向代理)
- 三、Nginx的負載均衡
- 什么是負載均衡?
- 四、Nginx的動靜分離!
- 五、Nginx的安裝
- windows版本下的安裝
- 下載
- 啟動
- 檢查是否安裝成功
- 配置監聽
- 關閉Nginx
- Linux版本下的安裝
- 解壓
- 配置
- 啟動
- 六、Nginx常用命令
一、Nginx是什么?
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日。其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、簡單的配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
Nginx 是高性能的 HTTP 和反向代理的web服務器,處理高并發能力是十分強大的,能經受高負 載的考驗,有報告表明能支持高達 50,000 個并發連接數。
Nginx支持熱部署,啟動簡單,可以做到7*24不間斷運行。幾個月都不需要重新啟動。
二、Nginx的反向代理(擴展:正向代理)
首先,看一張關于正向代理和反向代理的圖片
在這里,用通俗易懂的方式解釋一下:
正向代理: 我們平時需要訪問國外的瀏覽器是不是很慢,比如我們要看推特,看GitHub等等。我們直接用國內的服務器無法訪問國外的服務器,或者是訪問很慢。所以我們需要在本地搭建一個服務器來幫助我們去訪問。那這種就是正向代理。(瀏覽器中配置代理服務器)
反向代理: 那什么是反向代理呢。比如:我們訪問淘寶的時候,淘寶內部肯定不是只有一臺服務器,它的內部有很多臺服務器,那我們進行訪問的時候,因為服務器中間session不共享,那我們是不是在服務器之間訪問需要頻繁登錄,那這個時候淘寶搭建一個過渡服務器,對我們是沒有任何影響的,我們是登錄一次,但是訪問所有,這種情況就是 反向代理。對我們來說,客戶端對代理是無感知的,客戶端不需要任何配置就可以訪問,我們只需要把請求發送給反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器的地址。(在服務器中配置代理服務器)
三、Nginx的負載均衡
什么是負載均衡?
負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。 負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
簡單來說就是:現有的請求使服務器壓力太大無法承受,所有我們需要搭建一個服務器集群,去分擔原先一個服務器所承受的壓力,那現在我們有ABCD等等多臺服務器,我們需要把請求分給這些服務器,但是服務器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一個問題。
Nginx給出來三種關于負載均衡的方式:
- 輪詢法(默認方法): 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 適合服務器配置相當,無狀態且短平快的服務使用。也適用于圖片服務器集群和純靜態頁面服務器集群。
- weight權重模式(加權輪詢): 指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的 情況。 這種方式比較靈活,當后端服務器性能存在差異的時候,通過配置權重,可以讓服務器的性能得到充分發揮,有效利用資源。weight和訪問比率成正比,用于后端服務器性能不均的情況。權重越高,在被訪問的概率越大
- ip_hash: 上述方式存在一個問題就是說,在負載均衡系統中,假如用戶在某臺服務器上登錄了,那么該用戶第二次請求的時候,因為我們是負載均衡系統,每次請求都會重新定位到服務器集群中的某一個,那么已經登錄某一個服務器的用戶再重新定位到另一個服務器,其登錄信息將會丟失,這樣顯然是不妥的。 我們可以采用ip_hash指令解決這個問題,如果客戶已經訪問了某個服務器,當用戶再次訪問時,會將該請求通過哈希算法,自動定位到該服務器。每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
四、Nginx的動靜分離!
Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。動靜分離技術其實是采用代理的方式,在server{}段中加入帶正則匹配的location來指定匹配項針對PHP的動靜分離:靜態頁面交給Nginx處理,動態頁面交給PHP-FPM模塊或Apache處理。在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態頁面的不同處理方式 目前,通過使用Nginx大大提高了網站的響應速度,優化了用戶體驗,讓網站的健壯性更上一層樓!
五、Nginx的安裝
Nginx的跨平臺的,因此,在任何平臺都是可以下載的。
windows版本下的安裝
下載
首先去官網下載最新的穩定版本:官網下載點我 下載后解壓打卡: 你會看見一下目錄。
啟動
啟動方式一:雙擊nginx.exe,雙擊后你能看見一個小黑窗口一閃而過。
啟動方式二:打開cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe ,回車即可
注意:如果安裝目錄是中文的情況,打開exe文件時會報錯。
檢查是否安裝成功
打開瀏覽器:瀏覽器地址欄輸入網址 http://localhost:80 回車,出現以下頁面說明啟動成功!
配置監聽
nginx的配置文件是conf目錄下的nginx.conf,默認配置的nginx監聽的端口為80,如果80端口被占用可以修改為未被占用的端口即可。 當我們修改了nginx的配置文件nginx.conf 時,不需要關閉nginx后重新啟動nginx,只需要執行命令 nginx -s reload 即可讓改動生效
關閉Nginx
如果使用cmd命令窗口啟動nginx, 關閉cmd窗口是不能結束nginx進程的,可使用兩種方法關閉nginx 方法一:(1)輸入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx),這兩個命令的區別在于nginx -s stop是快速停止Nginx,而nginx -s quit是有序的停止Nginx,前者可能會導致數據沒有完全保存;
方法二:(2)使用taskkill taskkill /f /t /im nginx.exe
注意:方法一必須要在Nginx的安裝包目錄下。否則無法找到Nginx。
這種方法可以直接在cmd命令面板上使用,當第一種方法無效時可以嘗試使用此方法,前第一種方法適用于大部分版本的Nginx,但是個別版本的可能不實用,使用taskkill就可解決。
注解:taskkill是用來終止進程的,/f是強制終止 ./t終止指定的進程和任何由此啟動的子進程。/im示指定的進程名稱 .
Linux版本下的安裝
下載安裝包: 它后面那個就是Windows版本下載的。
下載完畢上傳到服務器上 /root
解壓
tar -zxvf nginx-1.18.0.tar.gzcd nginx-1.18.0
配置
./configuremakemake install
查找安裝路徑: whereis nginx
啟動
啟動成功訪問 服務器ip:80
注意:如何連接不上,檢查阿里云安全組是否開放端口,或者服務器防火墻是否開放端口! 相關命令:
# 開啟service firewalld start# 重啟service firewalld restart# 關閉service firewalld stop# 查看防火墻規則firewall-cmd --list-all# 查詢端口是否開放firewall-cmd --query-port=8080/tcp# 開放80端口firewall-cmd --permanent --add-port=80/tcp# 移除端口firewall-cmd --permanent --remove-port=8080/tcp#重啟防火墻(修改配置后要重啟防火墻)firewall-cmd --reload# 參數解釋1、firwall-cmd:是Linux提供的操作firewall的一個工具;2、--permanent:表示設置為持久;3、--add-port:標識添加的端口;
六、Nginx常用命令
cd /usr/local/nginx/sbin/./nginx 啟動./nginx -s stop 停止./nginx -s quit 安全退出./nginx -s reload 重新加載配置文件 如果我們修改了配置文件,就需要重新加載。ps aux|grep nginx 查看nginx進程
到此這篇關于一文帶你搞懂什么是Nginx的文章就介紹到這了,更多相關Nginx詳解內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
相關文章: