Nginx 安裝嗽桩,反向代理,負(fù)載均衡

1.Nginx簡(jiǎn)介

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)告顯示能支持50000個(gè)并發(fā)連接數(shù)

1.1nginx 安裝

安裝之前的依賴? pcre-8.37.tar.gz

openssl-1.0.1t.tar.gz

zlib-1.2.8.tar.gz

nginx-1.11.1.tar.gz

使用yum命令安裝依賴

命令:yum -y install? gcc zlib zlib-devel pcre-devel openssl openssl-devel

安裝nginx

下載nginx 網(wǎng)址http://nginx.org/en/download.html

1.使用命令tar -xvf nginx-1.12.2.tar.gz

2.進(jìn)入nginx-1.12.2文件夾 cd nginx-1.12.2/

3.執(zhí)行命令 ./configure

4.執(zhí)行命令 make? && make install

安裝成功后罐氨,再usr/local/nginx? 目錄中有sbin腳本

啟動(dòng)nginx 提示:nginx: [emerg] unknown directive "stub_status" in /usr/local/nginx/conf/nginx.conf:80

Nginx沒有添加modules/ngx_http_stub_status_module.o模塊。

問題解決 沒有安裝的話消恍,可以在tar包安裝編譯的時(shí)候添加如下參數(shù):重新執(zhí)行第三步

? ./configure --prefix=/usr/local/nginx?--with-http_stub_status_module

1.2 查詢 進(jìn)程nginx :

ps -ef | grep nginx

1.3 開啟防火墻

查詢防火墻命令: firewall -cmd --list -all

# 查看防火墻狀態(tài)? service iptables status??

# 停止防火墻? service iptables stop??

# 啟動(dòng)防火墻? service iptables start??

# 重啟防火墻?? service iptables restart??

# 永久關(guān)閉防火墻? chkconfig iptables off??

# 永久關(guān)閉后重啟? chkconfig iptables?on

開啟80端口?? vim /etc/sysconfig/iptables

# 加入如下代碼 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

保存退出后重啟防火墻?? service iptables restart

1.4 nginx 常用命令

1使用nginx 操作 需要進(jìn)入nginx的目錄中cd? /usr/local/nginx/sbin

查詢版本號(hào)./nginx -v

關(guān)閉nginx ./nginx -s stop

啟動(dòng)nginx ./nginx

重新加載nginx ./nginx -s reload

1.5 nginx 配置文件

? ?? 文件位置:/usr/local/nginx/conf/nginx.conf

nginx的配置文件分三部分

1 全局塊

從配置文件開始到events塊之間的內(nèi)容 岂昭,主要會(huì)影響nginx服務(wù)器的整體運(yùn)行配置指令,主要包括配置運(yùn)行服務(wù)器的用戶狠怨,允許生產(chǎn)的worker process 數(shù)约啊,進(jìn)程pid存放路徑,日志存放路徑佣赖,配置文件的引入

worker_processess 1? 值越大恰矩,支持并發(fā)處理的量越多

2? ? events塊

影響服務(wù)器與用戶之間的網(wǎng)絡(luò)連接

worker_connections 1024? ? 用戶的最大的連接數(shù)

3? ?? http 全局塊

http塊 包括 http全局塊 和server塊

2.反向代理

正向代理:如果吧局域網(wǎng)外的Internet 想象成一個(gè)資源庫,則局域網(wǎng)的客戶端要訪問Internet 需要通過代理服務(wù)器來訪問憎蛤,這種代理服務(wù)器外傅,稱為正向代理

反向代理:反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對(duì)于用戶而言俩檬,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器萎胰,即用戶直接訪問反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源。同時(shí)棚辽,用戶不需要知道目標(biāo)服務(wù)器的地址技竟,也無須在用戶端作任何設(shè)定。反向代理服務(wù)器通城辏可用來作為Web加速榔组,即使用反向代理作為Web服務(wù)器的前置機(jī)來降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載熙尉,提高訪問效率。

事例1

1,效果:

打開瀏覽器搓扯,在瀏覽器地址欄中輸入www.123.com跳轉(zhuǎn)到Linux系統(tǒng)tomcat主頁中

2準(zhǔn)備工作

1在Linux中安裝tomcat 默認(rèn)端口8080

tomcat安裝文件放再liunx系統(tǒng)中解壓 進(jìn)入tomcat的bin目錄中?? ./startup.sh? 啟動(dòng)tomcat服務(wù)器

對(duì)外開放訪問端口? ? firewall-cmd --add-port=8080/tcp --permanent

firewall-cmd -reload

? 3配置

配置hosts文件 192.168.137.128www.123.com

location ~

? ? ? ? {

? ? ? proxy_pass http://192.168.199.144;?? //反向代理配置 跳轉(zhuǎn)ip地址

? ? ? ? }

事例2

1效果

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

訪問http://192.168.137.128:9001/edu/ 直接跳轉(zhuǎn)到192.168.199.144

訪問http://192.168.137.128:9001/vod/ 直接跳轉(zhuǎn)到192.168.199.143:8080

2準(zhǔn)備2臺(tái)服務(wù)器 ip地址 分別為143,144

3配置nginx

找到nginx的配置文件 : \usr\local\nginx\conf\nginx.conf

server{

listen 9001;

server_name 192.168.137.128

location ~? /edu/{? ? ? // 使用正則表達(dá)式匹配有edu的路徑 轉(zhuǎn)發(fā)到192.168.199.144 服務(wù)器

proxy_pass http://192.168.199.144

}

location ~ /vod/{

proxy_pass http://192.168.199.143:8080

}

}

4重新加載nginx服務(wù)器

location 指令說明

該指令用于匹配url

語法:

location [ = | ~ | ~* |^~] uri{

}

= :用戶不含正則表達(dá)式的URI前,要求請(qǐng)求字符串和URI嚴(yán)格匹配锨推,如果匹配成功就停止向下搜索并立即處理該請(qǐng)求

~:用戶表示URI包含正則表達(dá)式 區(qū)分大小寫

~* 用戶表示URI包含正則表達(dá)式 不區(qū)分大小寫

^~:用戶不含正則表達(dá)式URI前要求nginx服務(wù)器找到表示URI和請(qǐng)求字符串匹配度最高的location后立即使用該location處理請(qǐng)求

3.負(fù)載均衡

負(fù)載均衡铅歼,英文名稱為L(zhǎng)oad Balance,其含義就是指將負(fù)載(工作任務(wù))進(jìn)行平衡爱态、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行谭贪,例如FTP服務(wù)器、Web服務(wù)器锦担、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等俭识,從而協(xié)同完成工作任務(wù)。

負(fù)載均衡構(gòu)建在原有網(wǎng)絡(luò)結(jié)構(gòu)之上洞渔,它提供了一種透明且廉價(jià)有效的方法擴(kuò)展服務(wù)器和網(wǎng)絡(luò)設(shè)備的帶寬套媚、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、增加吞吐量磁椒、提高網(wǎng)絡(luò)的可用性和靈活性堤瘤。

3.1 事例1

效果

通過瀏覽器地址欄輸入地址http://192.168.137.128/edu/a.html,通過負(fù)載均衡 評(píng)價(jià)分配到 多個(gè)服務(wù)器中

在nginx配置文件中配置負(fù)載均衡

在http塊中添加

upstream myserver{? ? ? //添加負(fù)載均衡的名稱

server?? 192.168.199.144:8080; #服務(wù)器列表

server? 192.168.199.144:8081;

server192.168.199.143:8080;

}

在server塊中配置信息

listen? 80 ;? #? 監(jiān)聽端口號(hào)

server_name 192.168.137.26; #監(jiān)聽的ip地址

location / {

proxy_pass? http://myserver; # 負(fù)載均衡的名稱

}

負(fù)載均衡的策略

1 輪詢:每個(gè)請(qǐng)求的按照時(shí)間順序逐一分配到不同的后端服務(wù)器浆熔,如果服務(wù)器宕機(jī)本辐,能自動(dòng)剔除

2 weight? 代表權(quán)重默認(rèn)為1 權(quán)重越高被分配的越多

upstream myserver{//添加負(fù)載均衡的名稱

server?? 192.168.199.144:8080weight =5;

server? 192.168.199.144:8081 weight=10;

server192.168.199.143:8080;

}

3 ip_hash

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

upstream myserver{//添加負(fù)載均衡的名稱

ip_hash;

server?? 192.168.199.144:8080; #服務(wù)器列表

server? 192.168.199.144:8081;

server192.168.199.143:8080;

}

4 fair 第三方 按照后端服務(wù)器的相應(yīng)時(shí)間來分配請(qǐng)求慎皱,響應(yīng)時(shí)間短的優(yōu)先分配

upstream myserver{//添加負(fù)載均衡的名稱

server?? 192.168.199.144:8080; #服務(wù)器列表

server? 192.168.199.144:8081;

server192.168.199.143:8080;

fair;

}

4.動(dòng)靜分離

動(dòng)靜分離是指在web服務(wù)器架構(gòu)中,將靜態(tài)頁面與動(dòng)態(tài)頁面或者靜態(tài)內(nèi)容接口和動(dòng)態(tài)內(nèi)容接口分開不同系統(tǒng)訪問的架構(gòu)設(shè)計(jì)方法叶骨,進(jìn)而提升整個(gè)服務(wù)訪問性能和可維護(hù)性茫多。

通過location指定不同的后綴名實(shí)現(xiàn)不同的請(qǐng)求轉(zhuǎn)發(fā),通過expires參數(shù)設(shè)置忽刽,可以使瀏覽器的緩存過期時(shí)間天揖,減少與服務(wù)器之間的請(qǐng)求和流量,具體expire是定義時(shí)給一個(gè)資源設(shè)定一個(gè)過期時(shí)間跪帝,就說無需去服務(wù)器驗(yàn)證直接通過瀏覽器自身確認(rèn)是否過期即可今膊,所有不會(huì)產(chǎn)生額外的瀏覽,這種方法伞剑,適合不經(jīng)常變動(dòng)的資源斑唬,如果經(jīng)常更新的文件不見識(shí)使用expire是來緩存,

在nginx的配置文件中配置動(dòng)靜分離

server{

listen?? 80; #監(jiān)聽端口

server_name 192.168.199.144;#監(jiān)聽的服務(wù)器ip地址

location /www/ {? # /www/ 規(guī)則

root? /data/;?? #靜態(tài)資源的路徑

index index.html index.htm index.php

}

location? /image/ { #/image/ 規(guī)則? 路徑中有image的參數(shù)

root /data/; #靜態(tài)資源的路徑

autoindex on; #列出文件夾的內(nèi)容

}

}

5 Nginx配置高可用的集群

1 做一個(gè) 主服務(wù)器和一個(gè)備服務(wù)器的nginx

2 使用keepalived 軟件來檢測(cè)nginx服務(wù)器是否宕機(jī) 如果檢測(cè)主服務(wù)器宕機(jī) 則自動(dòng)切換到備份服務(wù)器

學(xué)習(xí)是是要使用以下工具

1 需要兩臺(tái)服務(wù)器

2 兩臺(tái)服務(wù)器安裝nginx

3 兩臺(tái)服務(wù)器安裝keepalived

安裝nginx 步驟從第一部分查看

安裝keepalived 使用yum命令安裝? yum install keepalived -y

安裝文件完成后會(huì)生成一個(gè)配置文件? 位置 /etc/keepalived/keepalived.conf

4修改配置文件來完成主備

global_defs{

router_id LVS_DEVEL? ? #訪問到主機(jī)服務(wù)器

}

LVS_DEVEL的來源 /etc/hosts

#檢測(cè)腳本和權(quán)重的參數(shù)

vrrp_script chk_http_port{

script "/usr/local/src/nginx_check.sh" #

interval 2? #檢測(cè)腳本執(zhí)行的間隔 (秒)

weight 2

}

5主備服務(wù)器配置 虛擬ip配置

vrrp_instance VI_1{

state MASTER? ? #服務(wù)器狀態(tài)? 主服務(wù)器 為MASTER? 備服務(wù)器為BACKUP

interface? ens33? #網(wǎng)卡的名字

virtual_router_id 51? ? #主備服務(wù)器的virtual_router_id 必須相同

priority? 100? ? ? ? #主備服務(wù)器取不同的優(yōu)先級(jí) 主服務(wù)器值較大赖钞,備份服務(wù)器較小

adver_int 1? #檢查服務(wù)器心跳 檢查服務(wù)器是否還在運(yùn)行 每隔一秒

authentication{? #校驗(yàn)方式 使用密碼校驗(yàn)

auth_type PASS

auth_pass 1111

}

virtual_ipaddress{

192.168.17.50? #vrrp H 虛擬IP地址

192.168.17.51? #vrrp H 虛擬IP地址

}

}

網(wǎng)卡名字查找? 使用ifconfig

6 配置腳本文件:/usr/local/src/nginx_check.sh

腳本文件內(nèi)容如下

#!/bin/bash

A=`ps -C nginx -no-header | wc -l `

if [$A -eq 0 ] ;then

/usr/local/nginx/sbin/nginx

sleep 2

if? [`ps -C nginx --no-header | wc -l`? -eq 0 ] then

killall keepalived

fi

fi

7啟動(dòng)nginx 啟動(dòng)keepalived

cd? /usr/local/nginx/sbin/

./nginx -s stop

./nginx

systemctl start keepalived.service

8 檢查進(jìn)程

ps -ef | grep keepalived

5 Nginx 原理

worker的工作情況

worker 爭(zhēng)搶獲取請(qǐng)求信息

一個(gè)master和多個(gè)worker的好處

1 可以使用nginx -是reload 熱部署,利于nginx進(jìn)行熱部署

2 worker 進(jìn)程來說聘裁,獨(dú)立的進(jìn)程雪营,不需要加鎖,省掉鎖帶來的開銷衡便,同事在編程以及問題查找時(shí)方便很多献起,采取獨(dú)立進(jìn)程可以讓相互之間不會(huì)影響,一個(gè)進(jìn)程退出镣陕,其他進(jìn)程正常工作谴餐,服務(wù)不會(huì)中斷,master進(jìn)程很會(huì)啟動(dòng)新的worker進(jìn)程呆抑,我worker進(jìn)程異常退出岂嗓,導(dǎo)致當(dāng)前worker的所有請(qǐng)求失敗,但不會(huì)影響其他worker的請(qǐng)求

3 設(shè)置多少worker才合適 nginx同redis類似都采用io多路復(fù)用機(jī)制每個(gè)worker都是一個(gè)獨(dú)立的進(jìn)程鹊碍,每個(gè)進(jìn)程只有一個(gè)主進(jìn)程

worker數(shù)量一般和cpu的數(shù)量一致最好

4 連接數(shù) 并發(fā)數(shù)

發(fā)送一個(gè)請(qǐng)求會(huì)占用幾個(gè)連接數(shù) :2個(gè) 或4個(gè)

nginx有一個(gè)master 有4個(gè)worker每個(gè)worker支持最大的鏈接數(shù)據(jù)時(shí)1024 支持最大并發(fā)數(shù)是多少

普通靜態(tài)訪問最大并發(fā)數(shù)? worker_connection * worker_processes /2

如果是http作為反向代理 最大并發(fā)數(shù) worker_connection * worker_processes /4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厌殉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侈咕,更是在濱河造成了極大的恐慌公罕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耀销,死亡現(xiàn)場(chǎng)離奇詭異楼眷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)熊尉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門罐柳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帽揪,你說我怎么就攤上這事硝清。” “怎么了转晰?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵芦拿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我查邢,道長(zhǎng)蔗崎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任扰藕,我火速辦了婚禮缓苛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己未桥,他們只是感情好笔刹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冬耿,像睡著了一般舌菜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亦镶,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天日月,我揣著相機(jī)與錄音,去河邊找鬼缤骨。 笑死爱咬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绊起。 我是一名探鬼主播精拟,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼虱歪!你這毒婦竟也來了串前?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤实蔽,失蹤者是張志新(化名)和其女友劉穎荡碾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體局装,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坛吁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铐尚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拨脉。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宣增,靈堂內(nèi)的尸體忽然破棺而出玫膀,到底是詐尸還是另有隱情,我是刑警寧澤爹脾,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布帖旨,位于F島的核電站,受9級(jí)特大地震影響灵妨,放射性物質(zhì)發(fā)生泄漏解阅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一泌霍、第九天 我趴在偏房一處隱蔽的房頂上張望货抄。 院中可真熱鬧,春花似錦、人聲如沸蟹地。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怪与。三九已至呀酸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琼梆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工窿吩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茎杂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓纫雁,卻偏偏與公主長(zhǎng)得像煌往,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轧邪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345