亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

前言

關(guān)于Nginx,你了解多少~

一、Nginx 簡介

Nginx("engine x") 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上 nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用 nginx 網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、 淘寶等。

1.1 WEB 服務(wù)器

Nginx 可以作為靜態(tài)頁面的 web 服務(wù)器,同時(shí)還支持 CGI 協(xié)議的動(dòng)態(tài)語言,比如 perl、php

等。但是不支持 JAVA。Java 程序只能通過與 Tomcat 配合完成。Nginx 專為性能優(yōu)化而開發(fā),性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率 ,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá) 50000個(gè)并發(fā)連接數(shù)。

1.2 反向代理

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

2.反向代理,代理服務(wù)端,客戶端無感知

1.3 負(fù)載均衡

Nginx 的異步框架可以處理很大的并發(fā)請(qǐng)求,把這些并發(fā)請(qǐng)求 hold 住之后就可以分發(fā)給后臺(tái)服務(wù)端(backend servers,也叫做服務(wù)池, 后面簡稱 backend)來做復(fù)雜的計(jì)算、處理和響應(yīng),這種模式的好處是相當(dāng)多的:隱藏業(yè)務(wù)主機(jī)更安全,節(jié)約了公網(wǎng) IP 地址,并且在業(yè)務(wù)量增加的時(shí)候可以方便地?cái)U(kuò)容后臺(tái)服務(wù)器。

這時(shí)候集群的概念產(chǎn)生了,我們?cè)黾臃?wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服器,也就是我們所說的負(fù)載均衡。

1.4 動(dòng)靜分離

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

Nginx部署靜態(tài)資源,tomcat部署動(dòng)態(tài)資源

二、安裝啟動(dòng)

Nginx官網(wǎng)

2.1 相關(guān)安裝包

? 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 包

進(jìn)入解壓縮目錄,執(zhí)行./configure

如果提示,需要提前安裝 gcc++,進(jìn)入安裝光盤目錄的軟件包(/media/centosXX/Package)執(zhí)行

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 目錄下執(zhí)行 make,再執(zhí)行 make install

2.2.2.安裝 openssl

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

進(jìn)入解壓縮目錄,執(zhí)行./config

make && make install

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

進(jìn)入解壓縮目錄,執(zhí)行./configure。

make && make install

2.2.4.安裝 nginx

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

進(jìn)入解壓縮目錄,執(zhí)行./configure。

make && make install

查看開放的端口號(hào)

firewall-cmd --list-all

設(shè)置開放的端口號(hào)

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

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

重啟防火墻

firewall-cmd –reload

2.3 Nginx 啟動(dòng)

命令

啟動(dòng)命令:在/usr/local/nginx/sbin 目錄下執(zhí)行 ./nginx

關(guān)閉命令: 在/usr/local/nginx/sbin 目錄下執(zhí)行 ./nginx -s stop

重新加載命令: 在/usr/local/nginx/sbin 目錄下執(zhí)行 ./nginx -s reload·

設(shè)置 nginx 為自啟動(dòng)服務(wù)

修改 linux 啟動(dòng)腳本/etc/rc.d/rc

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

三、Nginx核心配置文件

nginx 安裝目錄下,其默認(rèn)的配置文件都放在conf 目錄下,而主配置文件nginx.conf 也在其中,后續(xù)對(duì) nginx 的使用基本上都是對(duì)此配置文件進(jìn)行相應(yīng)的修改。

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type Application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}

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

第一部分:全局塊

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

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

這是 Nginx 服務(wù)器并發(fā)處理服務(wù)的關(guān)鍵配置,worker_processes 值越大,可以支持的并發(fā)處理量也越多,但是會(huì)受到硬件、軟件等設(shè)備的制約。

第二部分:events 塊

events {
worker_connections 1024;
}

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

上述例子就表示每個(gè) work process 支持的最大連接數(shù)為 1024.

這部分的配置對(duì) Nginx 的性能影響較大,在實(shí)際中應(yīng)該靈活配置。

第三部分:http 塊

http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}

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

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

http 全局塊

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

server 塊

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

每個(gè) http 塊可以包括多個(gè) server 塊,而每個(gè) server 塊就相當(dāng)于一個(gè)虛擬主機(jī)。

而每個(gè) server 塊也分為全局 server 塊,以及可以同時(shí)包含多個(gè) locaton 塊。

全局 server 塊

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

location 塊

一個(gè) server 塊可以配置多個(gè) location 塊。

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

四、Nginx配置實(shí)戰(zhàn)-反向代理

案例配置如下:

server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8001;
}
location ~ /demo1 {
proxy_pass http://localhost:8001;
}
location ~ /demo2 {
proxy_pass http://localhost:8002;
}
}

location 指令說明

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

location [= | ~ | ~*| ^~] url{
}

= :用于不含正則表達(dá)式的 uri 前,要求請(qǐng)求字符串與 uri 嚴(yán)格匹配,如果匹配

成功,就停止繼續(xù)向下搜索并立即處理該請(qǐng)求。

~:用于表示 uri 包含正則表達(dá)式,并且區(qū)分大小寫。

~*:用于表示 uri 包含正則表達(dá)式,并且不區(qū)分大小寫。

^~:用于不含正則表達(dá)式的 uri 前,要求 Nginx 服務(wù)器找到標(biāo)識(shí) uri 和請(qǐng)求字

符串匹配度最高的 location 后,立即使用此 location 處理請(qǐng)求,而不再使用 location

塊中的正則 uri 和請(qǐng)求字符串做匹配。

注意:如果 uri 包含正則表達(dá)式,則必須要有 ~ 或者 ~* 標(biāo)識(shí)。

五、Nginx配置實(shí)戰(zhàn)-負(fù)載均衡

案例配置如下:

http{
upstream myserver{
ip_hash;
server localhost:8080 weight=1;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myserver
proxy_connect_timeout 10;
}
}

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

輪詢(默認(rèn))

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器 down 掉,能自動(dòng)剔除。

weight

weight 代表權(quán)重,默認(rèn)為 1,權(quán)重越高被分配的客戶端越多指定輪詢幾率,weight 和訪問比率成正比,用于后端服務(wù)器性能不均的情況。

ip_hash

每個(gè)請(qǐng)求按訪問 ip 的 hash 結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決 session 的問題。

fair(第三方)

按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。

六、Nginx 配置實(shí)戰(zhàn)-動(dòng)靜分離

動(dòng)靜分離從目前實(shí)現(xiàn)角度來講大致分為兩種:

1.一種是純粹把靜態(tài)文件獨(dú)立成單獨(dú)的域名,放在獨(dú)立的服務(wù)器上,也是目前主流推崇的方案;

2.另外一種方法就是動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過 nginx 來分開。

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

七、Nginx 原理與優(yōu)化參數(shù)配置

Nginx,一看就會(huì)

 

master-workers 的機(jī)制的好處

首先,對(duì)于每個(gè) worker 進(jìn)程來說,獨(dú)立的進(jìn)程,不需要加鎖,所以省掉了鎖帶來的開銷,

同時(shí)在編程以及問題查找時(shí),也會(huì)方便很多。其次,采用獨(dú)立的進(jìn)程,可以讓互相之間不會(huì)

影響,一個(gè)進(jìn)程退出后,其它進(jìn)程還在工作,服務(wù)不會(huì)中斷,master 進(jìn)程則很快啟動(dòng)新的

worker 進(jìn)程。當(dāng)然,worker 進(jìn)程的異常退出,肯定是程序有 bug 了,異常退出,會(huì)導(dǎo)致當(dāng)

前 worker 上的所有請(qǐng)求失敗,不過不會(huì)影響到所有請(qǐng)求,所以降低了風(fēng)險(xiǎn)。

需要設(shè)置多少個(gè) worker

Nginx 同 redis 類似都采用了 io 多路復(fù)用機(jī)制,每個(gè) worker 都是一個(gè)獨(dú)立的進(jìn)程,但每個(gè)進(jìn)

程里只有一個(gè)主線程,通過異步非阻塞的方式來處理請(qǐng)求, 即使是千上萬個(gè)請(qǐng)求也不在話

下。每個(gè) worker 的線程可以把一個(gè) cpu 的性能發(fā)揮到極致。所以 worker 數(shù)和服務(wù)器的 cpu

數(shù)相等是最為適宜的。設(shè)少了會(huì)浪費(fèi) cpu,設(shè)多了會(huì)造成 cpu 頻繁切換上下文帶來的損耗。

#設(shè)置 worker 數(shù)量。
worker_processes 4
#work 綁定 cpu(4 work 綁定 4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work 綁定 cpu (4 work 綁定 8cpu 中的 4 個(gè)) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000

連接數(shù) worker_connection

這個(gè)值是表示每個(gè) worker 進(jìn)程所能建立連接的最大值,所以,一個(gè) nginx 能建立的最大連接數(shù),應(yīng)該是 worker_connections * worker_processes。當(dāng)然,這里說的是最大連接數(shù),對(duì)于HTTP 請(qǐng) 求 本 地 資 源 來 說 , 能 夠 支 持 的 最 大 并 發(fā) 數(shù) 量 是 worker_connections * worker_processes,如果是支持 http1.1 的瀏覽器每次訪問要占兩個(gè)連接,所以普通的靜態(tài)訪問最大并發(fā)數(shù)是: worker_connections * worker_processes /2,而如果是 HTTP 作 為反向代理來說,最大并發(fā)數(shù)量應(yīng)該是 worker_connections *

worker_processes/4。因?yàn)樽鳛榉聪虼矸?wù)器,每個(gè)并發(fā)會(huì)建立與客戶端的連接和與后端服務(wù)的連接,會(huì)占用兩個(gè)連接。

Nginx,一看就會(huì)

 

八、nginx 搭建高可用集群

注意:此部分屬于高級(jí)技術(shù),近幾日會(huì)將下面的知識(shí)點(diǎn)補(bǔ)充完畢。

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

Nginx,一看就會(huì)

 

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

Nginx,一看就會(huì)

 

分享到:
標(biāo)簽:Nginx
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定