https://segmentfault.com/a/1190000022398646

一: Nginx簡(jiǎn)介

1.1 nginx概述

Nginx ("engine x") 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,特點(diǎn)是占有內(nèi)存少靖苇,并發(fā)能力強(qiáng)盗温,事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好萎津。

1.2 nginx作為web服務(wù)器

Nginx 可以作為靜態(tài)頁(yè)面的 web 服務(wù)器婶恼,同時(shí)還支持 CGI 協(xié)議的動(dòng)態(tài)語(yǔ)言,比如 perl痕钢、php等香到。但是不支持java鱼冀。Java程序只能通過(guò)與tomcat配合完成。Nginx專為性能優(yōu)化而開(kāi)發(fā)悠就,性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率 千绪,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá) 50,000個(gè)并發(fā)連接數(shù)。

參考?https://lnmp.org/nginx.html

1.3 正向代理

如果把局域網(wǎng)外的 Internet 想象成一個(gè)巨大的資源庫(kù)梗脾,則局域網(wǎng)中的客戶端要訪問(wèn)Internet荸型,則需要通過(guò)代理服務(wù)器來(lái)訪問(wèn),這種代理服務(wù)就稱為正向代理炸茧。

1.4 反向代理

其實(shí)客戶端對(duì)代理是無(wú)感知的瑞妇,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問(wèn),我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器梭冠,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后辕狰,在返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器妈嘹,暴露的是代理服務(wù)器地址柳琢,隱藏了真實(shí)服務(wù)器IP地址。

1.5 負(fù)載均衡

當(dāng)客戶端請(qǐng)求數(shù)據(jù)發(fā)送到服務(wù)器润脸,服務(wù)器處理完請(qǐng)求后將結(jié)果返回給客戶端柬脸。這種單一模式在早期是適用的,當(dāng)訪問(wèn)和數(shù)據(jù)量增加以及業(yè)務(wù)復(fù)雜度增加時(shí)候就不再適用了毙驯,可以通過(guò)提升服務(wù)器配置來(lái)解決倒堕,但是服務(wù)器提升是有限制,頂級(jí)物理配置不能解決問(wèn)題爆价,這樣就只能在縱向解決問(wèn)題垦巴。增加服務(wù)器數(shù)量,把請(qǐng)求分發(fā)到各個(gè)服務(wù)器將負(fù)載發(fā)到不同的服務(wù)器铭段,這就是負(fù)載均衡骤宣。

1.6 動(dòng)靜分離

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

二: Nginx安裝

docker安裝nginx參照:

docker 入門到實(shí)戰(zhàn)(七)docker常用安裝

三: Nginx常用命令和配置文件

3.1 nginx 常用的命令

在容器中

幫助命令

nginx -h

查看版本信息

nginx -v

關(guān)閉命令

nginx -s?stop

重新加載命令 (可做開(kāi)啟命令)

nginx -s reload

設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)

chkconfig?nginx?on

3.2 nginx.conf 配置文件

etc/nginx/conf.d/default.conf#默認(rèn)資源配置文件etc/nginx/nginx.conf#默認(rèn)配置/usr/share/nginx/html#初始頁(yè)面? 資源位置/var/log/nginx#日志文件地址

#全局塊usernginx;worker_processesauto;error_log/var/log/nginx/error.log;pid/run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.include/usr/share/nginx/modules/*.conf;# events塊? 影響nginx服務(wù)器與用戶的網(wǎng)絡(luò)連接events{worker_connections1024;#支持連接的最大數(shù)}#http全局塊http{log_formatmain'$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log/var/log/nginx/access.log? main;sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_timeout65;types_hash_max_size2048;include/etc/nginx/mime.types;default_typeapplication/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include/etc/nginx/conf.d/*.conf;# server 塊#每個(gè) http 塊可以包括多個(gè) server 塊爸吮,而每個(gè) server 塊就相當(dāng)于一個(gè)虛擬主機(jī)芬膝。#而每個(gè) server 塊也分為全局 server 塊,以及可以同時(shí)包含多個(gè) locaton 塊形娇。server{listen80default_server;listen[::]:80default_server;server_name_;root/usr/share/nginx/html;# Load configuration files for the default server block.include/etc/nginx/default.d/*.conf;location/ {? ? ? ? }error_page404/404.html;location= /40x.html {? ? ? ? }error_page500502503504/50x.html;location= /50x.html {? ? ? ? }? ? }

四: Nginx配置實(shí)例-反向代理

4.1 配置實(shí)例1

創(chuàng)建一個(gè)tomcat容器開(kāi)放 9001端口

在 nginx.conf文件 中添加serer塊 就可以訪問(wèn)tomcat了

server{listen80;server_nameip地址;location/ {proxy_passhttp://ip地址:9001;? ? ? ? }? ? }

4.2 配置實(shí)例2

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

訪問(wèn) ip地址:8080/edu 跳轉(zhuǎn)到ip地址:9001:edu

訪問(wèn) ip地址:8080/vod 跳轉(zhuǎn)到ip地址:9002:vod

在兩個(gè)tomcat容器中的webapps文件夾中分別添加edu文件夾和vod文件夾

修改配置文件 server模塊

server{listen80;server_nameIP地址;location~ /edu/{proxy_passhttp://IP地址:9001;? ? ? ? }location~ /vod/{proxy_passhttp://IP地址:9002;? ? ? ? }? ? }

location指令說(shuō)明:

1、= :用于不含正則表達(dá)式的 uri 前桐早,要求請(qǐng)求字符串與 uri 嚴(yán)格匹配癣缅,如果匹配成功,就停止繼續(xù)向下搜索并立即處理該請(qǐng)求哄酝。

2所灸、~:用于表示 uri 包含正則表達(dá)式,并且區(qū)分大小寫(xiě)炫七。?

3爬立、~*:用于表示 uri 包含正則表達(dá)式,并且不區(qū)分大小寫(xiě)万哪。

4侠驯、^~:用于不含正則表達(dá)式的 uri 前,要求 Nginx 服務(wù)器找到標(biāo)識(shí) uri 和請(qǐng)求字符串匹配度最高的 location 后奕巍,立即使用此 location 處理請(qǐng)求吟策,而不再使用 location 塊中的正則 uri 和請(qǐng)求字符串做匹配。

五: nginx 配置實(shí)例-負(fù)載均衡

5.1 修改nginx.conf文件的server塊

可以參考?nginxa安裝

server{listen80default_server;listen[::]:80default_server;server_name39.108.79.168;root/usr/share/nginx/html;# Load configuration files for the default server block.include/etc/nginx/default.d/*.conf;location/ {proxy_passhttp://pic;? ? ? ? }error_page404/404.html;location= /40x.html {? ? ? ? }error_page500502503504/50x.html;location= /50x.html {? ? ? ? }? ? }upstreampic{server39.108.79.168:9001weight=5;server39.108.79.168:9002weight=5;? ? }

5.2 nginx 分配服務(wù)器策略

第一種 輪詢(默認(rèn))?

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

第二種weight?

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

第三種ip_hash?

每個(gè)請(qǐng)求按訪問(wèn)ip 的hash 結(jié)果分配俄精,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器

第四種fair(第三方)?

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

六: nginx 原理與優(yōu)化參數(shù)配置

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

首先蜡歹,對(duì)于每個(gè) worker 進(jìn)程來(lái)說(shuō)赂乐,獨(dú)立的進(jìn)程薯鳍,不需要加鎖,所以省掉了鎖帶來(lái)的開(kāi)銷挨措,同時(shí)在編程以及問(wèn)題查找時(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)求失敗,不過(guò)不會(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è)主線程娄徊,通過(guò)異步非阻塞的方式來(lái)處理請(qǐng)求, 即使是千上萬(wàn)個(gè)請(qǐng)求也不在話下盾戴。每個(gè) worker 的線程可以把一個(gè) cpu 的性能發(fā)揮到極致寄锐。所以 worker 數(shù)和服務(wù)器的 cpu數(shù)相等是最為適宜的。設(shè)少了會(huì)浪費(fèi)cpu尖啡,設(shè)多了會(huì)造成 cpu 頻繁切換上下文帶來(lái)的損耗橄仆。

設(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)然奈懒,這里說(shuō)的是最大連接數(shù),對(duì)于HTTP 請(qǐng) 求 本 地 資 源來(lái) 說(shuō) 宪巨, 能 夠 支 持 的 最大 并 發(fā) 數(shù) 量 是 worker_connections * worker_processes磷杏,如果是支持 http1.1 的瀏覽器每次訪問(wèn)要占兩個(gè)連接,所以普通的靜態(tài)訪問(wèn)最大并發(fā)數(shù)是: worker_connections * worker_processes /2揖铜,而如果是HTTP 作 為反向代理來(lái)說(shuō)茴丰,最大并發(fā)數(shù)量應(yīng)該是 worker_connections * worker_processes/4达皿。因?yàn)樽鳛榉聪虼矸?wù)器天吓,每個(gè)并發(fā)會(huì)建立與客戶端的連接和與后端服務(wù)的連接,會(huì)占用兩個(gè)連接峦椰。

七: nginx 搭建集群 主從模式

此處可參考?

https://m.jb51.net/article/17...

https://www.cnblogs.com/jinji...

配置好的鏡像已經(jīng)發(fā)到阿里云

docker pull registry.cn-shanghai.aliyuncs.com/rem/nginx_keeplived:latest

創(chuàng)建兩個(gè)容器

docker?run?-tid --privileged --name nginx_master?--restart=always -p 6001:80 rem/nginx_keeplived /usr/sbin/init

docker?run?-tid --privileged --name nginx_slave?--restart=always -p 6002:80 rem/nginx_keeplived /usr/sbin/init

要是容器里面nginx沒(méi)有啟動(dòng) 可以命令啟動(dòng) 也可以重載啟動(dòng)

systemctl?start?nginx.service

nginx -s reload

設(shè)置開(kāi)機(jī)啟動(dòng)

chkconfig?nginx?on

查看啟動(dòng)

查看keepalived狀態(tài)

修改里面的資源文件后訪問(wèn)

宿主機(jī) 外部測(cè)試

斷開(kāi)master容器后

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末龄寞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汤功,更是在濱河造成了極大的恐慌物邑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滔金,死亡現(xiàn)場(chǎng)離奇詭異色解,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)餐茵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門科阎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人忿族,你說(shuō)我怎么就攤上這事锣笨。” “怎么了道批?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵错英,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我隆豹,道長(zhǎng)椭岩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任璃赡,我火速辦了婚禮判哥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鉴吹。我一直安慰自己姨伟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布豆励。 她就那樣靜靜地躺著夺荒,像睡著了一般瞒渠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上技扼,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天伍玖,我揣著相機(jī)與錄音,去河邊找鬼剿吻。 笑死窍箍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丽旅。 我是一名探鬼主播椰棘,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榄笙!你這毒婦竟也來(lái)了邪狞?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茅撞,失蹤者是張志新(化名)和其女友劉穎帆卓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體米丘,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剑令,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拄查。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吁津。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖靶累,靈堂內(nèi)的尸體忽然破棺而出腺毫,到底是詐尸還是另有隱情,我是刑警寧澤挣柬,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布潮酒,位于F島的核電站,受9級(jí)特大地震影響邪蛔,放射性物質(zhì)發(fā)生泄漏急黎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一侧到、第九天 我趴在偏房一處隱蔽的房頂上張望勃教。 院中可真熱鬧,春花似錦匠抗、人聲如沸故源。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绳军。三九已至印机,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間门驾,已是汗流浹背射赛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奶是,地道東北人楣责。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像聂沙,于是被迫代替她去往敵國(guó)和親秆麸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.基本配置與http配置 #user root root;#設(shè)置nginx服務(wù)的系統(tǒng)使用用戶worker_pro...
    顧道夫閱讀 2,787評(píng)論 0 1
  • 0.網(wǎng)站頁(yè)面訪問(wèn):a.網(wǎng)站頁(yè)面訪問(wèn)流程:01.客戶端 瀏覽器輸入網(wǎng)址信息點(diǎn)擊回車02.客戶端 完成域名的解析過(guò)...
    噬魂老妖閱讀 281評(píng)論 0 1
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,005評(píng)論 0 9
  • 1迅脐,編譯安裝nginx應(yīng)用芍殖,提供wordpress服務(wù) wgethttp://nginx.org/download...
    stephe_c閱讀 401評(píng)論 0 3
  • 本章內(nèi)容◆ I/O模型◆ nginx介紹◆ nginx安裝◆ nginx各種模塊實(shí)現(xiàn)web服務(wù)◆ nginx實(shí)現(xiàn)f...
    Liang_JC閱讀 506評(píng)論 0 0