Nginx簡介

Nginx簡介

1、nginx概述

充當http服務器、反向代理服務器、虛擬主機。

Nginx特點:

1、跨平臺,支持linux和window

2、內(nèi)存消耗小、成本低廉

3、穩(wěn)定性高:用于反向代理,宕機的概率微乎其微

使用nginx大大提高了我們網(wǎng)站的響應速度,優(yōu)化了用戶體驗,讓網(wǎng)站的健壯性更上一層樓,

2、反向代理

(1)正向代理

客戶端知道服務器端,通過代理端連接服務器端。代理端代理的是服務器端。

(2)反向代理:我們只需要將請求發(fā)送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數(shù)據(jù)后,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器的地址,隱藏了真實服務器的IP地址。

所謂反向,是對正向而言的。服務器端知道客戶端,客戶端不知道服務器端,通過代理端連接服務器端。代理端代理的是客戶端。代理對象剛好相反,所以叫反向代理。

3、負載均衡

單個服務器解決不了,我們增加服務器的數(shù)量,然后將請求分發(fā)到各個服務器上,將原先請求集中到單個服務器上的情況改為將請求分發(fā)到多個服務器上,將負載分發(fā)到不同服務器,也就是負載均衡。

4、動靜分離

為了加快網(wǎng)站的解析速度,可以把動態(tài)頁面和靜態(tài)頁面有不同的服務器來解析,加快解析速度,降低原來單個服務器的壓力

Nginx安裝

1、linux環(huán)境

pcre、openss、zlib、nginx

如果連接不上,需要檢查下是否開放端口,或者服務器防火墻是否開放端口!

開啟
service firewalld start

重啟
service firewalld restart

關(guān)閉
service firewalld stop

查看開放的端口號
firewall-cmd --list-all

查詢端口是否開放
firewall-cmd --query-port=8080/tcp

設置開放的端口號
firewall-cmd --add-service=http -permanent
sudo firewall-cmd --add-port=80/tcp --permanent

移除端口
firewall-cmd --permanent --remove-port=8080/tcp

重啟防火墻
firewall-cmd -reload

2、window環(huán)境

1、將nginx下載壓縮

2、啟動nginx

(1)直接雙擊nginx.exe,雙擊后一個黑色的彈窗一閃而過

(2)打開cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe 或者 start nginx ,回車即可

3、檢查

(1)直接在瀏覽器地址欄輸入網(wǎng)址 http://localhost:80,回車,出現(xiàn)以下頁面說明啟動成功

image.png

(2)也可以在cmd命令窗口輸入命令 tasklist /fi "imagename eq nginx.exe" ,出現(xiàn)如下結(jié)果說明啟動成功

image.png

nginx默認的端口是80,如果80端口被占用,可以在其conf路徑下的nginx.conf配置文件中進行修改

image.png

檢查80端口是否被占用的命令是: netstat -ano | findstr 0.0.0.0:80 或 netstat -ano | findstr "80"

當我們修改了nginx的配置文件nginx.conf 時,不需要關(guān)閉nginx后重新啟動nginx,只需要執(zhí)行命令 nginx -s reload 即可讓改動生效

Nginx操作的常用和配置文件

nginx常用命令

1、查詢nginx版本號

linux:./nginx -v
win:nginx -v

2、啟動nginx

linux:./nginx
win:start nginx

3、關(guān)閉nginx

linux:./nginx -s stop
win:nginx -s stop

4、重新加載nginx配置

linux:./nginx -s reload
win:nginx -s reload

5、安全退出

./nginx -s quit

6、查看nginx進程

ps aux|grep nginx 

nginx配置文件

打開nginx.conf我們可以很明顯的將nginx.conf配置文件分為三部分

第一部分:全局塊

主要是設置一些影響nginx服務器整體運行的配置指令,主要包括配置運行nginx服務器的用戶(組)、允許生成的worker process數(shù),進程pid存放路徑,日志存放路徑和類型以及配置文件的引入等。

worker_processes  1;
這個是nginx服務器并發(fā)處理服務的關(guān)鍵配置,worker_processes值越大,可以支持的并發(fā)處理量也越多,但是會受到硬件、軟件等設備的制約

第二部分:events塊

events塊主要影響nginx服務器與用戶的網(wǎng)絡鏈接,常用的設置包括是否開啟對多個work process下的網(wǎng)絡鏈接進行序列化,是否允許同時接收多個網(wǎng)絡連接,選取哪種事件驅(qū)動模型來處理連接請求,每個word process 可以同時支持的最大連接數(shù)等。

這部分的配置對nginx的性能影響大,在實際中應該靈活配置

events {
    worker_connections  1024;
}
表示每個work process 支持的最大連接數(shù)為1024

第三部分:http塊

這算是nginx服務器配置中最頻繁的部分,代理、緩存和日志定義等多數(shù)功能和第三方模塊的配置都在這里,需要注意的是http塊包含了http全局塊和server塊。

1、http全局塊:

http全局配置的指令包括文件引入、MIME-TYPE定義、日志自定義、連接超時時間、單鏈接請求數(shù)上限等。

2、service塊:

這塊和虛擬主機有密切關(guān)系,虛擬主機從用戶角度看,和一臺獨立的硬件主機是完全一樣的,該技術(shù)的產(chǎn)生是為了節(jié)省互聯(lián)網(wǎng)服務器硬件成本。

每個http塊可以包括多個server塊,而每個server塊就相當于一個虛擬主機。

而server塊也分為全局server塊,以及可以同時包含多個location塊。

1、全局server塊

最常見的配置是本虛擬機主機的監(jiān)聽配置和本虛擬主機的名稱或IP配置

2、location塊

一個server可以配置多個location塊

這塊主要作用是基于nginx服務器接收到的請求字符串,對虛擬主機名稱之外的字符串進行匹配,對特定的請求進行處理。地址定向、數(shù)據(jù)緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

Niginx之反向代理

1、首先準備一個項目,分別運行在兩個不一樣的端口號(打包成jar 運行)

image.png

1、反向代理實例一

使用nginx反向代碼,代理這個端口

nginx監(jiān)聽端口為9001

訪問http://localhost:9001/ 直接跳轉(zhuǎn)到127.0.0.1:8081

配置nginx.conf文件

 server {
        listen       9001;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8081/;
        }
    }
image.png

2、反向代理實例二

使用nginx反向代理,根據(jù)訪問的路徑跳轉(zhuǎn)到不同端口的服務中

nginx監(jiān)聽端口為9002

訪問http://127.0.0.1:9002/edu/ 直接跳轉(zhuǎn)到127.0.0.1:8081

訪問http://127.0.0.1:9002/vod/ 直接跳轉(zhuǎn)到127.0.0.1:8082

server {
        listen       9002;
        server_name  localhost;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8081;
        }
        location ~ /vod/ {
            proxy_pass http://127.0.0.1:8082;
        }
    }
image.png

location指令說明:

該指令用于匹配URL

  • =:用于不含正則表達式的url,要求請求字符串與url嚴格匹配,如果匹配成功就繼續(xù)向下搜索并立即處理該請求。
  • ~:用于表示url包含正則表達式,并且區(qū)分大小寫
  • ~*:用于表示url包含正則表達式,并且不區(qū)分大小寫
  • ^~:用于不含正則表達式的url前,要求nginx服務器找到標識url和請求字符串匹配度高的location后,立即使用此location處理請求,而不再使用location塊中的正則url和請求字符串做匹配。

注意:如果url包含正則表達式,則必須要有或者*標識。

Nginx負載均衡

niginx將原先請求集中到單個服務器上改為將請求分發(fā)到多個服務器上,將負載分發(fā)到不同的服務器,也就是我們所說的負載均衡

image.png

實例

監(jiān)聽端口為8052

訪問http://localhost:8052 可以隨機訪問到127.0.0.1:8081或127.0.0.1:8082

對nginx.conf進行配置:

#負載均衡配置的規(guī)則
upstream ch{
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=1;
    }
server {
    listen       8052;
    server_name  localhost;
    location / {
        root   html;
        proxy_pass http://ch;   #這邊的ch要與上面的配置規(guī)則的ch一致才行
        index  index.html index.htm;    
    }
}

#重啟配置之后,返回http://localhost:8052/可以看到 分別調(diào)用了一次8081和8082,跟后面weight權(quán)重有關(guān),權(quán)重越大,訪問的頻率越高

nginx分配策略

負載均衡就是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。在linux下有nginx、LVS、Haproxy等等服務可以提供負載均衡服務,而且nginx提供了幾種分配方式(策略):

1、輪詢(默認)

每個請求按照時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。

2、weight

weight代表權(quán)重默認為1,權(quán)重越高被分配的客戶端越多

(指定輪詢的機率,weight和訪問比率成正比,用于后端服務器性能不均的情況)

3、ip_hash

每個請求訪問的ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session問題,如:

upstream server_pool{
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}

4、fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優(yōu)先分配

upstream server_pool{
server 127.0.0.1:8081;
server 127.0.0.1:8082;
fair;
}

Nginx動態(tài)分離

nginx動靜分離簡單來說就是把動態(tài)和靜態(tài)請求分開,不能單理解成動態(tài)頁面和靜態(tài)頁面分開。動靜分離可以理解成nginx處理靜態(tài)頁面,tomcat處理動態(tài)頁面,動靜分離分為兩種:

1、把靜態(tài)文件獨立成單獨的域名,放在獨立的服務器上,主流的方案

2、把靜態(tài)和動態(tài)文件混合一起發(fā)布,通過nginx來分開(使用location指定不同的后綴名實現(xiàn)不同的請求轉(zhuǎn)發(fā))

Expires參數(shù):給一個資源設定一個過期的時間,就是無需去服務端驗證,直接通過瀏覽器自身確認是否過期即可,不會產(chǎn)生額外的流量,此種適合不經(jīng)常變動的資源(如果經(jīng)常更新的文件,不建議使用expires緩存)

image.png

Nginx原理

nginx高可用主備模式

原理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] 簡介 nginx [engine x] is an HTTP and reverse proxy se...
    Whyn閱讀 733評論 0 1
  • 簡介: Nginx是一款自由、開源、高性能的HTTP服務器和反向代理服務器,可以當做(郵件代理)IMAP,POP3...
    hlchengzi閱讀 1,995評論 0 1
  • 一、Nginx的產(chǎn)生 Nginx是一款高性能的 HTTP 和反向代理服務器,由俄羅斯人Igor Sysoev(伊戈...
    striveSmile閱讀 1,240評論 0 47
  • 【簡介】Nginx是一款輕量級的文本反向代理服務器及電子郵件代理服務器,其特點是內(nèi)存少,并發(fā)高?!竟ぷ髟怼縉gi...
    先生_呂閱讀 1,960評論 1 1
  • 一、nginx簡介 1.什么是nginx? 一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMT...
    wustmz閱讀 7,701評論 0 70

友情鏈接更多精彩內(nèi)容