sql

nginx快速入門


簡介

本篇文章我們來學習一下nginx,那麼首先擺在我們面前的問題就是:何為nginx?nginx能做什麼?

nginx是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務,特點是佔有記憶體少,併發能力強。nginx可以作為靜態頁面的web伺服器,同時還支援CGI協議的動態語言,如:perl、php等,但不支援java,java程式只能透過與tomcat配合完成。nginx專為效能最佳化而開發,效能是其最重要的考量,實現上非常注重效率,能經受高負載的考驗。

相關概念

為了能夠更深刻地認識到nginx,這裡介紹其幾個十分重要的概念:

  1. 反向代理
  2. 負載均衡
  3. 動靜分離

反向代理

在瞭解反向代理之前,我們可以來看看何為正向代理。
如果把區域網外的Internet想象成一個巨大的資源庫,區域網中的使用者要想訪問Internet,則需要透過代理伺服器來訪問,這種代理服務就稱為正向代理。

舉個很簡單的例子,你現在想要訪問google,然後你直接在瀏覽器的網址裡輸入www.google.com能訪問到嗎?我們知道,因為一些原因,在國內是訪問不到google的,所以這個時候你透過代理伺服器間接地訪問到了google,這個過程稱為正向代理。

那麼何為反向代理呢?

在反向代理中,其實客戶端對代理是無感的,因為客戶端不需要任何配置就能可以訪問,我們只需要將請求傳送到反向代理伺服器,由反向代理伺服器去選擇目標伺服器獲取資料後,再返回給客戶端,此時反向代理伺服器和目標伺服器對外就是一個伺服器,暴露的是代理伺服器地址,隱藏了真實伺服器的ip地址。

負載均衡

客戶端傳送多個請求到伺服器,伺服器處理請求,有一些可能要與資料庫進行互動,伺服器處理完畢後,再將結果返回給客戶端。
這種架構模式對於早期的系統相對單一、併發請求相對較少的情況下是比較適合的,成本也低,但是隨著資料的逐漸增大,目前伺服器已經無法應對高併發的情況,該怎麼辦呢?

最簡單的辦法當然就是升級伺服器的配置,但這種方式成本太高,倘若伺服器的配置已經到達頂峰,卻仍然無法抗住巨大的併發請求,這個時候該如何解決呢?

回顧剛才的反向代理,客戶端傳送的請求會透過反向代理伺服器,而反向代理伺服器會去選擇目標伺服器,假設現在同時有30條請求,我們有三臺伺服器,那麼負載均衡要做的事情就是將這30條請求平均分配到三臺伺服器中,使得每臺伺服器處理的請求趨近於10條。

動靜分離

為了加快網站的解析速度,通常把動態頁面和靜態頁面由不同的伺服器來解析,以此加快解析速度,降低原來單個伺服器的壓力。

安裝教程

概念說完了,該講講如何安裝nginx了,這裡以centos6環境為例。

先來到官網下載好nginx:http://nginx.org/
在這裡插入圖片描述
隨便下載一個版本就好了,這裡以nginx-1.19.0版本為例。

然後點選這裡就開始下載了:
在這裡插入圖片描述
下載完成後把它放到一邊,我們先下載nginx所需的依賴。

執行如下指令下載pcre:

wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

下載完成後對其進行解壓,執行指令:

tar -xvf pcre-8.37.tar.gz

解壓完成後需要進入到該目錄中:

cd pcre-8.37.tar.gz

接著執行指令對其進行編譯和檢查:

./configure

有些同學在進行編譯檢查的時候可能會遇到這個問題:
在這裡插入圖片描述
產生這個問題是因為缺少gcc編譯器,安裝一下就好了,執行如下指令安裝:

yum install gcc-c++

最後執行安裝指令:

make && make install

到這裡pcre就安裝好了,接著安裝一下zlib,執行指令:

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

所有依賴安裝完成,就可以開始安裝nginx了,還記得我們前面下載好的nginx壓縮包嗎,透過連線軟體將壓縮包放到linux環境中,或者也可以透過指令直接下載:

wget https://.org/download/nginx-1.19.1 tar.gz

下載好後解壓一下:

tar -xvf nginx-1.19.1 tar.gz

然後進入解壓目錄,執行指令:

./configure

最後執行安裝指令:

make && make install

在正式啟動nginx之前,我們還需要設定一下防火牆,執行指令:

vi /etc/sysconfig/iptables

將檔案修改為如下內容:

# Firewall configuration written by system-config-firewall 
# Manual customization of this file is not recommended. 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 

-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT 

nginx的埠為80,所以我們讓80埠開放即可,然後重啟防火牆:

service iptables restart

此時我們來到nginx目錄下的sbin:

cd /usr/local/nginx/sbin/

執行指令:

./nginx

nginx就啟動了,如果遇到這個問題:

Nginx: error while loading shared libraries: libpcre.so.

只需執行這條指令即可:

ln -s /usr/local/lib/libpcre.so.1 /lib64/

成功啟動後,我們檢視一下linux環境的ip地址:
在這裡插入圖片描述
此時開啟瀏覽器,在位址列上輸入192.168.124.7,訪問成功。
在這裡插入圖片描述

nginx常用命令

使用nginx命令的前提是我們當前處在nginx目錄中,即:/usr/local/nginx/sbin,下面介紹一些十分常用的nginx命令:

  • 檢視版本
  • 啟動nginx
  • 關閉nginx
  • 重新載入nginx

檢視版本

./nginx -v

啟動nginx

./nginx

關閉nginx

./nginx -s stop

重新載入nginx

./nginx -s reload

nginx配置實現

下面來具體實現一下nginx的配置,分為:

  1. 反向代理
  2. 負載均衡
  3. 動靜分離

反向代理

在實現之前,先提出一個要求:開啟瀏覽器,在位址列輸入www.test.com,跳轉至tomcat主頁面。

先來分析一下執行流程,我們在瀏覽器位址列輸入www.test.com之後,需要將本次請求交給nginx伺服器,再由nginx伺服器轉向tomcat伺服器,因為涉及到一個域名,所以還需要在windows系統下的hosts檔案中進行配置。

首先對hosts檔案進行配置,來到該目錄下C:\Windows\System32\drivers\etc找到hosts檔案,並做如下修改:
在這裡插入圖片描述
前面是ip地址,後面是域名,讓二者做一個對映關係。

接下來就是在nginx中進行請求轉發的配置,來到/usr/local/nginx/conf目錄下,對nginx.conf檔案進行修改:
在這裡插入圖片描述
修改完成後使用./nginx指令重新啟動一下nginx,千萬記得要在nginx的sbin目錄下執行該指令。

最後我們測試一下,在瀏覽器位址列輸入www.test.com,訪問成功。
在這裡插入圖片描述

負載均衡

下面來具體實現一下負載均衡的效果,先提出一個要求,在瀏覽器位址列中輸入http://192.168.124.7/test.,將該請求分發至8080和8081埠中。

先進行準備工作,放置兩個tomcat用於模擬兩臺伺服器:
在這裡插入圖片描述
並對tomcat8081目錄下的tomcat進行配置,將其配置成8081埠,最後分別在兩個tomcat的webapps目錄下存放一個html檔案:
在這裡插入圖片描述
在這裡插入圖片描述
然後分別啟動兩個tomcat,這樣準備工作就完成了,下面就要對nginx進行負載均衡的配置:
在這裡插入圖片描述
配置完成後重啟nginx伺服器。

到這裡就完成了負載均衡的操作,但效果如何體現呢?看下面的演示:
在這裡插入圖片描述
因為nginx伺服器監聽的是80埠,所以我們可以省略埠號直接透過ip訪問,會發現當不停地重新整理頁面進行請求的時候,頁面有時會顯示8080,有時會顯示8081,這說明負載均衡已經成功實現了,nginx伺服器每次都將請求平均分配給兩個伺服器進行處理才會出現這樣的現象。

動靜分離

動靜分離說得通俗一點就是將所有靜態請求交給nginx處理,將所有動態請求透過nginx再交給tomcat處理。

先做準備工作,在linux根目錄下建立data資料夾,並在該資料夾下建立html和image資料夾,其中分別有一個test.html檔案和test.png檔案。
在這裡插入圖片描述
接下來就對nginx進行配置:
在這裡插入圖片描述
配置完成後同樣重新啟動一下nginx伺服器,最後看執行效果:
在這裡插入圖片描述
在這裡插入圖片描述

本文章已修改原文用詞符合繁體字使用者習慣使其容易閱讀

版權宣告:此處為CSDN博主「~wangweijun」的原創文章,依據CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/qq_42453117/article/details/107763725