導航:首頁 > 配伺服器 > nginx伺服器需要什麼硬體

nginx伺服器需要什麼硬體

發布時間:2023-02-09 16:54:06

1. 解剖nginx伺服器架構

模塊化結構的思想是一個很久的概念,但也正是成熟的思想造就了Nginx的巨大優越性。

我們知道Nginx從總體上來講是有許多個模塊構成的。習慣將Nginx分為5大模塊分別為:核心模塊,標准HTTP模塊,可選HTTP模塊,郵件服務模塊和第三方模塊。

這5個模塊由上到下重要性一次遞減。

(1)核心模塊;

核心模塊是Nginx伺服器正常運行必不可少的模塊,如同操作系統的內核。它提供了Nginx最基本的核心服務。像進程管理、許可權控制、錯誤日誌記錄等;

(2)標准HTTP模塊;

標准HTTP模塊支持標準的HTTP的功能;

(3)可選HTTP模塊;

可選HTTP模塊主要用於擴展標準的HTTP功能,讓Nginx能處理一些特殊的服務;

(4)郵件服務模塊;

郵件服務模塊主要用於支持Nginx的郵件服務;

(5)第三方模塊;

第三方模塊是為了擴展Nginx伺服器應用,完成開發者想要的功能;

*******Nginx中的模塊命名有自己的習慣*********

一般以Ngx_作為前綴,——mole作為後綴,中間使用一個或者多個英文單詞描述模塊的工能,例如Ngx_core_mole表示該模塊提供Nginx的核心功能等;

具體各個模塊中包含哪些模塊可以自己去源碼中查詢,這里略過;

從架構設計上說,Nginx伺服器是與眾不同的。其一在於它的模塊化設計;其二也是更重要的一點在於它對與客戶端請求的處理機制上;

web伺服器和客戶端是一對多的關系,Web伺服器必須有能力同時為多個客戶端提供服務。一般來說完成並行處理請求工作有三種方式:

1.多進程方式;

2.多線程方式;

3.非同步方式;

這里簡單說明一下這三種方式:

(1)多進程方式

多進程方式指,伺服器每當收到一個客戶端時。就有伺服器主進程生成一個子進程出來和客戶端建立連接進行交互。指導連接斷開。該子進程就結束了。

多進程方式的優點是設計簡單,各個子進程相對獨立,處理客戶端請求時彼此不受干擾;缺點是操作系統生成一個子進程需要進行內存復制等操作,在資源和時間上會產生一定的開銷;當有大量請求時,會導致系統性能下降;

(2)多線程方式

多線程方式指每當伺服器接收到一個請求後,會由伺服器主進程派生出一個線程出來和客戶端進行交互。由於操作系統產生出一個線程的開銷遠遠小於一個進程的開銷。故多線程方式在很大程度上減輕了Web伺服器對系統資源的要求。但同時由於多個線程位於一個進程內,可以訪問同樣的內存空間。所以需要開發者自己對內存進程管理,增大了難度。

(3)非同步方式

非同步方式適合多進程和多線程完全不同的一種處理客戶端請求的方式。這里有幾個概念我們需要熟悉一下: 同步,非同步,阻塞,非阻塞

在網路通信中同步和非同步是描述通信模式的概念。

同步:發送方發送完請求後,需要等待接收到接收方發回的響應,才能發送下一個請求;所有請求在服務端得到同步,發送方和接收方的步調是一致的;

非同步 :和同步機制相反,在非同步機制中,發送方發出一個請求後,不等接收方響應這個請求,就繼續發送下一個請求;所有來自發送方的請求形成一個隊列,接收方處理完成後通知發送方;

在進程處理調度方式上用阻塞與非阻塞。在網路通信中主要指套接字socket的阻塞和非阻塞,而socket的實質就是IO操作。

阻塞 :調用結果返回之前,當前線程從運行狀態被掛起,一直等到調用結果返回之後,才進入就緒狀態,獲取CPU後繼續執行。

非阻塞 :和阻塞方式正好相反,如果調用結果不能馬上返回,當前線程也不會馬上返回,而是立即返回執行下一個調用。

因此就衍生出4中方式:同步阻塞,同步非阻塞,非同步阻塞,非同步非阻塞

這里簡單解釋一下非同步非阻塞:發送方向接收方發送請求後,不用等待響應,可以繼續其他工作;接收方處理請求時進行的IO操作如果不能馬上得到結果,也不必等待,而是馬上返回去去做其他事情。當IO操作完成以後,將完成狀態和結果通知接收方,接收方再響應發送方。

與此同時Nginx伺服器處理請求是怎樣的呢???

Nginx伺服器的一個顯著的優勢就是能夠同時處理大量的並發請求。它結合多進程機制和非同步機制。非同步機制使用的是非同步非阻塞方式。(Master-Worker)。

每個工作進程使用非同步非阻塞方式,可以處理多個客戶端請求。當某個工作進程接收到客戶端的請求以後,調用IO進行處理,如果不能立即得到結果,就去處理其他的請求;而客戶端在此期間也無需等待響應,可以去處理其他事情;當IO返回時,就會通知此工作進程;該進程得到通知,暫時掛起當前處理的失誤去響應客戶端請求。

也就是:

Nginx採用非同步非阻塞方式來處理請求,處理請求具體到系統底層就是讀寫事件(所謂阻塞調用方式即請求事件還沒准備好,線程只能一直去等,等事件准備好了再處理;而非阻塞即事件沒准備好,馬上返回ENGAIN,告訴你事件還沒准准備好,而在這期間可以先去做其他事,再回頭看看事件准備好了嗎,時不時會看,需要的開銷也是不小的)

非同步可以理解為循環處理多個准備好的事件,不會導致無謂的資源浪費,當有更多的並發數只會佔用更多的內存而已;

從上面我們可以知道,Nginx伺服器的工作進程調用IO後,就取進行其他工作了;當IO調用返回後,會通知工作進程。 但IO調用時如何把自己的狀態通知給工作進程的呢??

一般解決這個問題有兩種方法:

(1)讓工作進程在進行其他工作的過程中間隔一段時間就去檢查一下IO的狀態,如果完成就響應客戶端,如果未完成,繼續工作。

(2)IO調用在完成後能主動通知工作進程。

當然最好的就是用第二種方法了;像select/poll/epoll等這樣的系統調用就是用來支持第二種解決方案的。這些系統調用也常被稱為事件驅動模型。他們提供了一種機制就只讓進程同時處理多個並發請求,不用關心IO調用的具體狀態。IO調用完全由事件驅動模型來管理。

Nginx中的事件驅動模型

就是用事件驅動處理庫(多路IO復用),最常用的就是select模型,poll模型,epoll模型。

關於這三個模型的詳解在這里可以看到:https://segmentfault.com/a/1190000003063859

通過這個上面的簡單講解,再加上伺服器的架構的了解,可以對Nginx有一個簡單的了解,希望對之後的源碼剖析有幫助。

大致上Nginx的架構就是這樣:

1.Nginx啟動後,會產生一個主進程,主進程執行一系列的工作後會產生一個或者多個工作進程;

2.在客戶端請求動態站點的過程中,Nginx伺服器還涉及和後端伺服器的通信。Nginx將接收到的Web請求通過代理轉發到後端伺服器,由後端伺服器進行數據處理和組織;

3.Nginx為了提高對請求的響應效率,降低網路壓力,採用了緩存機制,將 歷史 應答數據緩存到本地。保障對緩存文件的快速訪問;

##工作進程##

工作進程的主要工作有以下幾項:

接收客戶端請求;

將請求一次送入各個功能模塊進行過濾處理;

IO調用,獲取響應數據;

與後端伺服器通信,接收後端伺服器處理結果;

數據緩存

響應客戶端請求;

##進程交互##

Nginx伺服器在使用Master-Worker模型時,會涉及到主進程和工作進程的交互和工作進程之間的交互。這兩類交互都依賴於管道機制。

1.Master-Worker交互

這條管道與普通的管道不同,它是由主進程指向工作進程的單向管道,包含主進程向工作進程發出的指令,工作進程ID等;同時主進程與外界通過信號通信;

2.worker-worker交互

這種交互是和Master-Worker交互是基本一致的。但是會通過主進程。工作進程之間是相互隔離的,所以當工作進程W1需要向工作進程W2發指令時,首先找到W2的進程ID,然後將正確的指令寫入指向W2的通道。W2收到信號採取相應的措施。

2. nginx配置前端,需要幾台什麼樣的伺服器。什麼樣的系統,什麼樣的配置

兩種前端架構:
lvs -> nginx前端代理 -> squid緩存
lvs -> squid前端緩存 -> nginx中層代理

squid在前面的優點:
Squid作純代理比較穩當
前端少一級代理,響應速度會快,出問題的可能性要小
功能有限,不會常被調整
容易為人接受,只是為了擴充功能而增加中層代理
一般的配置簡便,比如增加一個二級域名,只需配置一個指向。
增加的nginx可擴展功能,增加對應用服務的負載均衡等。

squid在前面的缺點:
squid支持的負載均衡配置復雜
容災問題
更新緩存要遍歷所有機器
squid只支持單cpu,所以浪費cpu

nginx在前面的優點:
分流、負載均衡功能強大,可以細致定義
可精細定製access_log
nginx的錯誤日誌更詳細
可讓squid只緩存無壓縮版本,由nginx壓縮,這樣可優化squid緩存容量
nginx可分擔部分無實時性要求的緩存

nginx在前面的優點:
nginx目前還有部分bug。
功能強,所以可能經常被調整
nginx代理用的短鏈接方式
單機上安裝nginx+squid的cpu消耗比純squid和純nginx之和要大一倍,但也不算高
容易遭到質疑,不易被接受。

3. nginx一般和什麼伺服器搭配使用

nginx網站服務一般在linux系統下使用,性能可以得到正常的發揮,在我windows下,事倍功半。

我這邊經常使用centos6.8 64位下使用nginx。nginx安裝教程如下。



yum-yinstallgccgcc-c++ncurses-devellibxml2-devel
openssl-develcurl-devellibjpeg-devellibpng-develautoconfpcre-devel
libtool-libsfreetype-develgdzlib-develzipunzip

-devel
glibc-develglibc-staticglib2-develbzip2-devel
gettext-devellibcap-devellogrotatentp
libmcrypt-develpatch------安裝nginx需要的組件

wgethttp://nginx.org/download/nginx-1.10.2.tar.gz---獲取nginx

tar-zxvf./nginx-1.10.2.tar.gz
cd./nginx-1.10.2

./configure
--with-stream--開啟nginxtcp代理服務
--with-http_ssl_mole---開啟nginxhttps服務
需要開啟那些請網路查下,一般默認就可以的
make----編譯nginx
makeinstall----安裝nginx

chkconfignginxon--開機啟動nginx

4. Nginx,一看就會

Nginx("engine x") 是一個高性能的 HTTP 和反向代理伺服器,特點是佔有內存少,並發能力強,事實上 nginx 的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用 nginx 網站用戶有:網路、京東、新浪、網易、騰訊、 淘寶等。

1.1 WEB 伺服器

Nginx 可以作為靜態頁面的 web 伺服器,同時還支持 CGI 協議的動態語言,比如 perl、php

等。但是不支持 java。Java 程序只能通過與 tomcat 配合完成。Nginx 專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率 ,能經受高負載的考驗,有報告表明能支持高達 50000個並發連接數。

1.2 反向代理

1.正向代理,代理客戶端,客戶端需要配置代理

2.反向代理,代理服務端,客戶端無感知

1.3 負載均衡

Nginx 的非同步框架可以處理很大的並發請求,把這些並發請求 hold 住之後就可以分發給後台服務端(backend servers,也叫做服務池, 後面簡稱 backend)來做復雜的計算、處理和響應,這種模式的好處是相當多的:隱藏業務主機更安全,節約了公網 IP 地址,並且在業務量增加的時候可以方便地擴容後台伺服器。

這時候集群的概念產生了,我們增加伺服器的數量,然後將請求分發到各個伺服器上,將原先請求集中到單個伺服器上的情況改為將請求分發到多個伺服器上,將負載分發到不同的服器,也就是我們所說的負載均衡。

1.4 動靜分離

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

Nginx官網

2.1 相關安裝包

pcre-8.37.tar.gz openssl-1.0.1t.tar.gz zlib-1.2.8.tar.gz nginx-1.11.1.tar.gz

2.2 安裝流程

2.1.1.安裝 pcre 解壓縮 pcre-xx.tar.gz 包

進入解壓縮目錄,執行./configure

如果提示,需要提前安裝 gcc++,進入安裝光碟目錄的軟體包(/media/CentOSXX/Package)執行

rpm -ivh libstdc+ devel-4.4.7-17.el6.x86_64.rpm

rpm -ivh gcc-c+ 4.4.7-17.el6.x86_64.rpm

./configure 完成後,回到 pcre 目錄下執行 make,再執行 make install

2.2.2.安裝 openssl

解壓縮 openssl-xx.tar.gz 包。

進入解壓縮目錄,執行./config

make && make install

2.2.3.安裝 zlib 解壓縮 zlib-xx.tar.gz 包。

進入解壓縮目錄,執行./configure。

make && make install

2.2.4.安裝 nginx

解壓縮 nginx-xx.tar.gz 包。

進入解壓縮目錄,執行./configure。

make && make install

查看開放的埠號

firewall-cmd --list-all

設置開放的埠號

firewall-cmd --add-service=http –permanent

sudo firewall-cmd --add-port=80/tcp --permanent

重啟防火牆

firewall-cmd –reload

2.3 Nginx 啟動

命令

啟動命令:在/usr/local/nginx/sbin 目錄下執行 ./nginx

關閉命令: 在/usr/local/nginx/sbin 目錄下執行 ./nginx -s stop

重新載入命令: 在/usr/local/nginx/sbin 目錄下執行 ./nginx -s reload·

設置 nginx 為自啟動服務

修改 linux 啟動腳本/etc/rc.d/rc

加入 :/usr/local/nginx/sbin/nginx

nginx 安裝目錄下,其默認的配置文件都放在conf 目錄下,而主配置文件nginx.conf 也在其中,後續對 nginx 的使用基本上都是對此配置文件進行相應的修改。

根據上述文件,我們可以很明顯的將 nginx.conf 配置文件分為三部分

第一部分:全局塊

從配置文件開始到 events 塊之間的內容,主要會設置一些影響 nginx 伺服器整體運行的配置指令,主要包括配置運行 Nginx 伺服器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日誌存放路徑和類型以及配置文件的引入等。

比如上面第一行配置的:worker_processes 1;

這是 Nginx 伺服器並發處理服務的關鍵配置,worker_processes 值越大,可以支持的並發處理量也越多,但是會受到硬體、軟體等設備的制約。

第二部分:events 塊

events 塊涉及的指令主要影響 Nginx 伺服器與用戶的網路連接,常用的設置包括是否開啟對多 work process 下的網路連接進行序列化,是否允許同時接收多個網路連接,選取哪種事件驅動模型來處理連接請求,每個 word process 可以同時支持的最大連接數等。

上述例子就表示每個 work process 支持的最大連接數為 1024.

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

第三部分:http 塊

這算是 Nginx 伺服器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這里。

需要注意的是:http 塊也可以包括 http 全局塊、server 塊。

http 全局塊

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

server 塊

這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一台獨立的硬體主機是完全一樣的,該技術的產生是為了節省互聯網伺服器硬體成本。

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

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

全局 server 塊

最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或 IP 配置。

location 塊

一個 server 塊可以配置多個 location 塊。

這塊的主要作用是基於 Nginx 伺服器接收到的請求字元串(例如 server_name/uri-string),對虛擬主機名稱(也可以是 IP 別名)之外的字元串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

案例配置如下:

location 指令說明

該指令用於匹配 URL,語法如下:

= :用於不含正則表達式的 uri 前,要求請求字元串與 uri 嚴格匹配,如果匹配

成功,就停止繼續向下搜索並立即處理該請求。

~:用於表示 uri 包含正則表達式,並且區分大小寫。

~*:用於表示 uri 包含正則表達式,並且不區分大小寫。

^~:用於不含正則表達式的 uri 前,要求 Nginx 伺服器找到標識 uri 和請求字

符串匹配度最高的 location 後,立即使用此 location 處理請求,而不再使用 location

塊中的正則 uri 和請求字元串做匹配。

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

案例配置如下:

在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服務,而且 Nginx 提供了幾種分配方式(策略):

輪詢(默認)

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

weight

weight 代表權重,默認為 1,權重越高被分配的客戶端越多指定輪詢幾率,weight 和訪問比率成正比,用於後端伺服器性能不均的情況。

ip_hash

每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決 session 的問題。

fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

動靜分離從目前實現角度來講大致分為兩種:

1.一種是純粹把靜態文件獨立成單獨的域名,放在獨立的伺服器上,也是目前主流推崇的方案;

2.另外一種方法就是動態跟靜態文件混合在一起發布,通過 nginx 來分開。

通過 location 指定不同的後綴名實現不同的請求轉發。通過 expires 參數設置,可以使瀏覽器緩存過期時間,減少與伺服器之前的請求和流量。具體 Expires 定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過瀏覽器自身確認是否過期即可,所以不會產生額外的流量。此種方法非常適合不經常變動的資源。(如果經常更新的文件,不建議使用 Expires 來緩存),我這里設置 3d,表示在這 3 天之內訪問這個 URL,發送一個請求,比對伺服器該文件最後更新時間沒有變化,則不會從伺服器抓取,返回狀態碼304,如果有修改,則直接從伺服器重新下載,返回狀態碼 200。

master-workers 的機制的好處

首先,對於每個 worker 進程來說,獨立的進程,不需要加鎖,所以省掉了鎖帶來的開銷,

同時在編程以及問題查找時,也會方便很多。其次,採用獨立的進程,可以讓互相之間不會

影響,一個進程退出後,其它進程還在工作,服務不會中斷,master 進程則很快啟動新的

worker 進程。當然,worker 進程的異常退出,肯定是程序有 bug 了,異常退出,會導致當

前 worker 上的所有請求失敗,不過不會影響到所有請求,所以降低了風險。

需要設置多少個 worker

Nginx 同 redis 類似都採用了 io 多路復用機制,每個 worker 都是一個獨立的進程,但每個進

程里只有一個主線程,通過非同步非阻塞的方式來處理請求, 即使是千上萬個請求也不在話

下。每個 worker 的線程可以把一個 cpu 的性能發揮到極致。所以 worker 數和伺服器的 cpu

數相等是最為適宜的。設少了會浪費 cpu,設多了會造成 cpu 頻繁切換上下文帶來的損耗。

連接數 worker_connection

這個值是表示每個 worker 進程所能建立連接的最大值,所以,一個 nginx 能建立的最大連接數,應該是 worker_connections * worker_processes。當然,這里說的是最大連接數,對於HTTP 請 求 本 地 資 源 來 說 , 能 夠 支 持 的 最 大 並 發 數 量 是 worker_connections * worker_processes,如果是支持 http1.1 的瀏覽器每次訪問要佔兩個連接,所以普通的靜態訪問最大並發數是: worker_connections * worker_processes /2,而如果是 HTTP 作 為反向代理來說,最大並發數量應該是 worker_connections *

worker_processes/4。因為作為反向代理伺服器,每個並發會建立與客戶端的連接和與後端服務的連接,會佔用兩個連接。

注意:此部分屬於高級技術,近幾日會將下面的知識點補充完畢。

8.1 Keepalived+Nginx 高可用集群(主從模式)

8.2 Keepalived+Nginx 高可用集群(雙主模式)

5. 不容錯過的Nginx配置詳解,一文帶你搞懂Nginx

Nginx是一個高性能的HTTP和反向代理伺服器,特點是佔用內存少,並發能力強,事實上Nginx的並發能力確實在同類型的網頁伺服器中表現好。Nginx專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率,能經受高負載的考驗,有報告表明能支持高達50000個並發連接數。

需要客戶自己在瀏覽器配置代理伺服器地址

例如:在大陸訪問www.google.com,我們需要一個代理伺服器,我們通過代理伺服器去訪問谷歌,這個過程就是正向代理。

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

單個伺服器解決不了,我們增加伺服器的數量,然後將請求分發到各個伺服器上,將原先請求集中到單個伺服器上的情況改為將請求分發到多個伺服器上,將負載分發到不同的伺服器,也就是我們說的負載均衡。

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

進入到下面的目錄,然後使用命令

配置文件所在位置:/usr/local/nginx/conf/nginx.conf

由全局塊+events塊+http塊組成

從配置文件開始到events之間的內容,主要會設置一些影響Nginx伺服器整體運行的配置指令,主要包括配置運行Nginx伺服器的用戶(組)、允許生成的worker process數,進程pid存放路徑、日誌存放路徑和類型以及配置文件的引入等。

events塊設計的指令主要影響Nginx伺服器與用戶的網路連接,常用的設置包括是否開啟對多work process下的網路連接進行序列化,是否允許同時接收多個網路連接,選取哪種事件驅動模型來處理連接請求,每個work process可以同時支持的最大連接數等。下面的例子表示每個work process支持的最大連接數為1024。這部分配置對Nginx的性能影響較大,在實際中應該靈活配置。

Nginx伺服器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這里,http塊又包括http全局塊和server塊。

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

這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一台獨立的硬體主機是完全一樣的,該技術的產生是為了節省互聯網伺服器硬體成本。

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

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

最常見的配置時本虛擬主機的監聽配置和本虛擬主機的名稱或IP配置。

一個server塊可以配置多個location塊。

這塊的主要作用是基於Nginx伺服器接收到的請求字元串(例如server_name/uri-string),對虛擬主機名稱(也可以是IP別名)之外的字元串(例如前面的/uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

訪問http://ip,訪問到的是Tomcat的主頁面http://ip:8080。

Nginx+JDK8+Tomcat

訪問:http://192.168.71.167/,看到的是Tomcat的首頁。

根據訪問的路徑跳轉到不同的伺服器中去。

訪問http://ip:9001/e 直接跳到http://127.0.0.1:8080/e

訪問http://ip:9001/vod 直接跳到http://127.0.0.1:9090/vod

Nginx+JDK8+配置兩個Tomcat,Tomcat的配置不再講述。

訪問http://192.168.71.167:9001/e/a.html跳到了http://127.0.0.1:8080/e/a.html頁面。

訪問http://192.168.71.167:9001/vod/a.html跳到了http://127.0.0.1:9090/vod/a.html頁面。

假如Nginx代理伺服器Server的配置為:192.168.71.167:9001,跳到:127.0.0.1:8080,訪問者的IP為:192.168.71.200:20604。

通過訪問http://192.168.71.167/e/a.html,實現負載均衡的效果,平均分攤到8080和8081埠中。

Nginx+JDK8+2台Tomcat,一台8080,一台8081。

訪問:http://192.168.71.167/e/a.html,8080和8081交替訪問。

1 輪詢(默認)

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

2 weight

weight代表權重,默認為1,權重越高被分配的客戶端越多。

指定輪詢幾率,weight和訪問比率成正比,用於後端伺服器性能不均的情況。

3 ip_hash

每個請求按訪問IP的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題,示例如下:

4 fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

訪問圖片:http://192.168.71.167/image/1.jpg

訪問頁面:http://192.168.71.167/www/a.html

訪問目錄:http://192.168.71.167/image/(因為設置了autoindex on;)

兩台機器,每台機器都裝有keepalived+Nginx+Tomcat。

主備keepalived伺服器中只有master一台機器會出現VIP地址,否則會出現腦裂問題。

【提示】腳本要加+x的執行許可權:chmod +x chk_nginx.sh

在Nginx里把虛擬IP配置進去即可。

一個Nginx是由一個master進程和多個worker進程組成的。

客戶端發送請求到Master,然後給worker,再由這些work爭搶處理這個請求。

1 可以使用nginx -s reload進行熱部署方式;

2 每個worker是獨立的進程,如果有其中的一個worker出現了問題,其他worker獨立的繼續進行爭搶,實現請求的過程,不會造成服務的中斷;

Nginx和Redis類似,都採用了io多路復用機制。每個worker進程都可以把CPU發揮到極致,一般來說worker數和伺服器的CPU數相等是最為適宜的。

發送請求:訪問靜態資源佔用2個連接,反向代理佔用4個連接。

【溫馨提示】

6. 搭建nginx伺服器需要什麼基礎

需要裝有windows或linux系統的物理機或虛擬機
需要有網路下載nginx文件
如果需要https,則需要域名,以及https證書

7. web伺服器 Nginx

(1)概念

Web伺服器是一台使用HTTP協議與客戶機瀏覽器進行信息交流(因此又稱為HTTP伺服器)、為互聯網客戶提供服務(信息瀏覽,下載資源等)的主機。發展趨勢:從HTML到XML、從有線到無線、從無聲到有聲

1.Linux是架設安全高效Web伺服器的操作系統

架設Web伺服器常見的操作系統:Windows、Linux、Unix。Linux安全性能最高,可以支持多個硬體平台,可以根據不同需求隨意修改、調整與復制各種程序的源碼以及發布在互聯網上,網路功能比較強大。

2.目前主流伺服器:Apache、 Nginx、 IIS

Unix/Linux操作系統下使用最廣泛的免費HTTP伺服器:Apache、Nginx。Windows(NT/2000/2003)操作系統使用ⅡS,綜合使用最多的Web伺服器是 IIs、Apache。

選擇WEB伺服器應考慮的本身特性因素有:性能、安全性、日誌和統計、虛擬主機、代理伺服器、緩沖服務和集成應用程序等。下面介紹目前最主流的三大web伺服器:

① 大型

IIS:

微軟的Internet Information Services (IIS),IIS 允許在互聯網上發布信息,提供了一個圖形界面的管理工具,稱為Internet服務管理器,可用於監視配置和控制Internet服務。IIS是一種Web服務組件,其中包括Web伺服器(網頁瀏覽)、FTP伺服器(文件傳輸)、NNTP伺服器(新聞服務)和SMTP伺服器(郵件傳輸),使得在網路上發布信息很容易。它提供ISAPI(Intranet Server API)作為擴展Web伺服器功能的編程介面,它還提供一個Internet資料庫連接器,可以實現對資料庫的查詢和更新。

Apache:

Apache是世界上用的最多的Web伺服器,源於NCSAhttpd伺服器的補丁(pache 補丁)。它的成功之處主要在於:源代碼開放、有開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)、可移植性。

② 小型

nginx:

nginx的模塊都是靜態編譯的,對fcgi的支持非常好,在處理鏈接的的方式上nginx支持epoll,支持通用語言介面(如:php、python、perl等),支持正向和反向代理、虛擬主機、url重寫、壓縮傳輸等。

(2)工作原理

當客戶端Web瀏覽器連到伺服器上並請求文件時,伺服器將處理該請求並將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。Web伺服器主要是處理向瀏覽器發送HTML以供瀏覽,而應用程序伺服器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序伺服器可以管理自己的資源,例如看大門的工作(gate-keeping ties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。Web伺服器的工作原理一般可分成如下4個步驟:

① 連接過程:是Web伺服器和其瀏覽器之間所建立起來的一種連接。查看連接過程是否實現,用戶可以找到和打開socket這個虛擬文件,這個文件的建立意味著連接過程這一步驟已經成功建立。

② 請求過程:是Web的瀏覽器運用socket這個文件向其伺服器而提出各種請求。

③ 應答過程:是運用HTTP協議把在請求過程中所提出來的請求傳輸到Web的伺服器,進而實施任務處理,然後運用HTTP協議把任務處理的結果傳輸到Web的瀏覽器,同時在Web的瀏覽器上面展示上述所請求之界面。

④ 關閉連接:是當上一個步驟--應答過程完成以後,Web伺服器和其瀏覽器之間斷開連接之過程。Web伺服器上述4個步驟環環相扣、緊密相聯,邏輯性比較強,可以支持多個進程、多個線程以及多個進程與多個線程相混合的技術。

Web伺服器可以解析HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應(response)。為了處理一個request,Web伺服器可以response一個靜態頁面(HTML頁面)或圖片,進行頁面跳轉(redirect),或把動態響應委託給伺服器端。Web伺服器的代理模型非常簡單。當一個request被送到Web伺服器里來時,它只單純的把request傳遞給可以很好的處理request的程序(伺服器端腳本,如:CGI腳本,JSP腳本,servlets,ASP腳本,伺服器端JavaScript等)。Web伺服器僅僅提供一個可以執行伺服器端程序和返回(程序所產生的)響應的環境,而不會超出職能范圍。伺服器端程序功能通常有:事務處理、資料庫連接、和消息等。雖然Web伺服器不支持事務處理或資料庫連接池,但它可以配置各種策略來實現容錯性、可擴展性(如:負載平衡、緩沖)。集群特徵經常被誤認為僅僅是應用程序伺服器專有的特徵。

(3)配置

如何設置默認文檔;在同一台伺服器上架設多個Web站點;(可以通過改變埠號)創建Web虛擬目錄;

1、了解DNS主機名和IP地址。

如果此WEB伺服器在Internet上,需向ISP申請和注冊此伺服器的DNS主機名和IP地址。如果此伺服器只在企業網內使用,則在內部的DNS伺服器上注冊。

2、打開伺服器文檔,選擇"埠"-"Internet埠",啟用"TCP/ IP埠"。

3、選擇"Internet協議",完成以下選項後,保存文檔。

① 綁定主機名:

A、選擇"是"則您可在"主機名"項中輸入主機別名,WEB用戶可用此別名替代Domino伺服器名訪問WEB伺服器。

B、選擇"否"(預設)則不允許使用別名。

② DNS查詢: 選擇"是"則Domino伺服器查詢發送請求的WEB客戶機的DNS名。

③ Domino日誌文件和資料庫將包含WEB客戶機的DNS主機名: 選擇"否"(預設)則不查詢,Domino日誌文件和資料庫將只包含WEB客戶機的IP地址( 注意:選擇"否"將提高Domino伺服器性能,因為伺服器不使用資源執行DNS查詢

④ "允許HTTP客戶瀏覽資料庫":選擇"是"則允許WEB用戶在URL中使用OpenServer命令來顯示伺服器上資料庫列表。選擇"否"(預設)則不允許。但即使WEB用戶不能看到伺服器上資料庫列表,他們仍能打開有許可權訪問的單個資料庫。

4、啟動HTTP任務。在伺服器控制台上,輸入:loap http

小型項目

(1)概念

1、Nginx(俄羅斯程序設計師Igor Sysoev用C語言進行編寫)是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3/SMTP)代理伺服器。

2、特點:佔有內存少(在高連接並發的情況下,Nginx是Apache伺服器不錯的替代品,能夠支持高達 50,000 個並發連接數的響應),並發能力強。

3、中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。

4、Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。

5、Nginx有自己的函數庫,並且除了zlib、PCRE和OpenSSL之外,標准模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權沖突,可以不使用這些第三方庫。

(2)安裝

官網:http://nginx.org/

選擇要安裝的版本:

(3)使用

打開conf/nginx.conf,修改埠號,和主頁根地址為:打包後index.html的目錄

模擬域名配置(本地域名設置):

在瀏覽器地址欄輸入配置好的「域名:埠號」回車:

閱讀全文

與nginx伺服器需要什麼硬體相關的資料

熱點內容
水冷壓縮冷凝機組 瀏覽:176
小米路由器app怎麼加黑名單 瀏覽:433
證券交易2012pdf 瀏覽:208
單線程和多線程編譯 瀏覽:155
游戲被加密了刪不了怎麼辦 瀏覽:475
二建6米的柱子加密多少箍筋 瀏覽:648
怎麼簡單易懂的了解伺服器 瀏覽:356
mcpe怎麼看伺服器地址 瀏覽:994
螢石雲智能鎖添加密碼 瀏覽:503
股票自動化交易編程 瀏覽:471
android自定義窗口 瀏覽:921
工程動力學pdf 瀏覽:179
騰訊的雲伺服器是bgp嗎 瀏覽:945
excel弘編程 瀏覽:912
什麼人不適合做程序員 瀏覽:675
喜購app怎麼樣 瀏覽:804
交換機查鄰居命令 瀏覽:343
渲染卡在正在編譯場景幾何體 瀏覽:316
app進入頁面為什麼有編譯 瀏覽:565
真我手機照片加密怎麼找回 瀏覽:637