簡(jiǎn)單實(shí)現(xiàn)Nginx的反向代理+負(fù)載均衡

一牵舵、引言

上次我們體驗(yàn)了Nginx反向代理的使用畸颅,配置是非常簡(jiǎn)單的涛癌,一句配置搞定种吸。這章我們來(lái)講講在Nginx如何使用反向代理+負(fù)載均衡。負(fù)載均衡估計(jì)程序員都聽(tīng)說(shuō)過(guò)恩闻,比如開(kāi)發(fā)一個(gè)電商、web端項(xiàng)目什么后期優(yōu)化需要做負(fù)載均衡侠草,不然同時(shí)10w用戶同時(shí)訪問(wèn)边涕,程序就容易相對(duì)應(yīng)的崩潰。

所謂負(fù)載均衡著隆,是由多臺(tái)服務(wù)器或服務(wù)共同完成一個(gè)功能點(diǎn)浦辨,從而達(dá)到負(fù)載均衡的效果蹬竖。打個(gè)比方:用戶請(qǐng)求發(fā)起一個(gè)請(qǐng)求,網(wǎng)站顯示的圖片量又比較大流酬,如果說(shuō)這個(gè)時(shí)候有N個(gè)用戶同時(shí)訪問(wèn)币厕,那么全部的工作量都放在了一臺(tái)服務(wù)器上,指不定什么時(shí)候就崩潰了康吵。如果說(shuō)有多臺(tái)服務(wù)器平分這個(gè)任務(wù)劈榨,那么這樣就很輕松了,效率也會(huì)有相對(duì)應(yīng)的提高晦嵌。

二同辣、實(shí)現(xiàn)

proxy_pass如何指向多臺(tái)服務(wù)器?

答:把多臺(tái)服務(wù)器用upstream綁定在一起并起一個(gè)組名,然后使用proxy_pass指向該組即可惭载。

小編為了做演示旱函,使用了tomcat發(fā)布了一個(gè)web頁(yè)面,頁(yè)面簡(jiǎn)簡(jiǎn)單單就一張圖片描滔,代碼如下:

<html>

<head>

????<title>welcome</title>

</head>

<body>

????<img src="/images/test.jpg"/>

</body>

</html>


實(shí)現(xiàn)效果:訪問(wèn)這個(gè)頁(yè)面時(shí)棒妨,由多個(gè)服務(wù)來(lái)提供圖片的顯示。

實(shí)現(xiàn)步驟:

1含长、先建立幾個(gè)虛擬主機(jī)券腔,有多少個(gè)服務(wù)提供就可以創(chuàng)建多少個(gè),小編在同一臺(tái)服務(wù)器進(jìn)行演示拘泞,就只創(chuàng)建兩個(gè)了纷纫。端口分別是81、82陪腌,也有分別的日志文件保存辱魁。

? server {

? ? ? ? listen 81;

? ? ? ? server_name localhost;

? ? ? ? location / {

? ? ? ? ? root /var/www;

? ? ? ? ? index index.html;

? ? ? ? }

? ? ? ? access_log logs/access_81.log main;

? }

? server {

? ? ? ? listen 82;

? ? ? ? server_name localhost;

? ? ? ? location / {

? ? ? ? ? root /var/www;

? ? ? ? }

? ? ? ? access_log logs/access_82.log main;

? }

2烟瞧、使用upstream綁定多個(gè)虛擬主機(jī),起名為imgserver染簇。綁定了如上兩個(gè)虛擬主機(jī)参滴,并設(shè)置一系列參數(shù)。

weight = 1 //表示權(quán)重锻弓,意思就是優(yōu)先誰(shuí)來(lái)處理這次請(qǐng)求砾赔,這里小編設(shè)置兩個(gè)都是一樣的。

max_fails = 2 //連接失敗次數(shù)弥咪,如果該地址連接失敗兩次过蹂,則表示該服務(wù)器已經(jīng)掛了,就不會(huì)在分配任務(wù)給它聚至。

fail_timeout = 3 //超時(shí)時(shí)長(zhǎng)酷勺,多久沒(méi)連接上則表示連接失敗

upstream imgserver {

? ? ? ? server 111.231.51.81:81 weight=1 max_fails=2 fail_timeout=3;

? ? ? ? server 111.231.51.81:82 weight=1 max_fails=2 fail_timeout=3;

}

3、proxy_pass 指向該組即可扳躬。

通過(guò)ip訪問(wèn)脆诉,默認(rèn)就是80端口,會(huì)轉(zhuǎn)發(fā)到tomcat發(fā)布的服務(wù)上贷币,如果有請(qǐng)求地址中包含images击胜,則會(huì)由upstream分配給不同的地址處理。 訪問(wèn)地址:http://111.231.51.81/?役纹,最后的效果可以查看不同的日志文件偶摔,則可以區(qū)分是哪一個(gè)處理的請(qǐng)求。

? ? server {

? ? ? ? listen 80;

? ? ? ? server_name 111.231.51.81;

? ? ? ? location /{

? ? ? ? ? ? proxy_pass http://111.231.51.81:8086/;

? ? ? ? }

? ? ? ? location ~* images {

? ? ? ? ? ? proxy_pass http://imgserver;

? ? ? ? }

? ? }


三促脉、整個(gè)配置文件展示辰斋,如果還有不清楚的小伙伴,可以參考一下瘸味,最好自己動(dòng)動(dòng)小手實(shí)戰(zhàn)一遍喲宫仗。以前文章中的實(shí)戰(zhàn)演示也包含在其中了。

#user? nobody;

worker_processes? 1;

#error_log? logs/error.log;

#error_log? logs/error.log? notice;

#error_log? logs/error.log? info;

#pid? ? ? ? logs/nginx.pid;

events {

? ? worker_connections? 1024;

}

http {

? ? include? ? ? mime.types;

? ? default_type? application/octet-stream;

? ? log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '

? ? ? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '

? ? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';

? ? #tcp_nopush? ? on;

? ? #keepalive_timeout? 0;

? ? keepalive_timeout? 65;

? ? #gzip? on;

? upstream imgserver {

server 111.231.51.81:81 weight=1 max_fails=2 fail_timeout=3;

server 111.231.51.81:82 weight=1 max_fails=2 fail_timeout=3;

? }


? server {

listen 81;

server_name localhost;

location / {

? root /var/www;

}

access_log logs/access_81.log main;

? }

? server {

listen 82;

server_name localhost;

location / {

? root /var/www;

}

access_log logs/access_82.log main;

? }


? server {

listen 80;

server_name www.suyouge.com;

location /{

? proxy_pass http://www.suyouge.com/;

}

? ? }

? ? server {

listen 80;

server_name 111.231.51.81;

location /{

? ? proxy_pass http://111.231.51.81:8086/;

}

location ~* images {

? ? proxy_pass http://imgserver;

}? ?

? ? }

? ? server {

? ? ? ? listen? ? ? 8088;

? ? ? ? server_name? localhost;

? ? ? ? #charset koi8-r;

? ? ? ? #access_log? logs/host.access.log? main;


location / {

? # if ($remote_addr = 116.238.62.103) {

? # return 404;

? #? } ?

? if ($http_user_agent ~ Firefox) {

set $isfox? 1;

? }

? if ($fastcgi_script_name ~ firefox.html){

set $isfox? 0;

? }

? if ($isfox = 1){

rewrite ^.*$ /404.html;break;

? } ?

? ? root /usr/local/nginx/html;

? index index.html index.htm;

}

? ? ? ? # redirect server error pages to the static page /50x.html

? ? ? ? #

? ? ? ? error_page? 500 502 503 504? /50x.html;

? ? ? ? location = /50x.html {

? ? ? ? ? ? root? html;

? ? ? ? }

? ? ? ? # proxy the PHP scripts to Apache listening on 127.0.0.1:80

? ? ? ? #

? ? ? ? #location ~ \.php$ {

? ? ? ? #? ? proxy_pass? http://127.0.0.1;

? ? ? ? #}

? ? ? ? # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

? ? ? ? #

? ? ? ? #location ~ \.php$ {

? ? ? ? #? ? root? ? ? ? ? html;

? ? ? ? #? ? fastcgi_pass? 127.0.0.1:9000;

? ? ? ? #? ? fastcgi_index? t

? ? ? ? #? ? index.php;

? ? ? ? #? ? fastcgi_param? SCRIPT_FILENAME? /scripts$fastcgi_script_name;

? ? ? ? #? ? include? ? ? ? fastcgi_params;

? ? ? ? #}

? ? ? ? # deny access to .htaccess files, if Apache's document root

? ? ? ? # concurs with nginx's one

? ? ? ? #

? ? ? ? #location ~ /\.ht {

? ? ? ? #? ? deny? all;

? ? ? ? #}

? ? }

? ? # another virtual host using mix of IP-, name-, and port-based configuration

? ? #

? ? #server {

? ? #? ? listen? ? ? 8000;

? ? #? ? listen? ? ? somename:8080;

? ? #? ? server_name? somename? alias? another.alias;

? ? #? ? location / {

? ? #? ? ? ? root? html;

? ? #? ? ? ? index? index.html index.htm;

? ? #? ? }

? ? #}

? ? # HTTPS server

? ? #

? ? server {

? ? ? ? listen? ? ? 443;

? ? ? ? server_name? localhost;

? ? ? ? ssl? ? ? ? ? ? ? ? ? on;

? ? ? ? ssl_certificate? ? ? 1_www.suyouge.com_bundle.crt;

? ? ? ? ssl_certificate_key? 2_www.suyouge.com.key;

? ? ? ? ssl_session_timeout? 5m;

? ? ? ? ssl_protocols? SSLv2 SSLv3 TLSv1;

? ? ? ? ssl_ciphers? HIGH:!aNULL:!MD5;

? ? ? ? ssl_prefer_server_ciphers? on;

location / {

? ? ? ? ? ? root? /var/www/html;

? ? ? ? ? ? index? index.html index.htm;

? ? ? ? }

? ? }

}




https://www.suyouge.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旁仿,一起剝皮案震驚了整個(gè)濱河市藕夫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枯冈,老刑警劉巖毅贮,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異尘奏,居然都是意外死亡滩褥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門罪既,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铸题,“玉大人,你說(shuō)我怎么就攤上這事琢感《洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵驹针,是天一觀的道長(zhǎng)烘挫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)柬甥,這世上最難降的妖魔是什么饮六? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮苛蒲,結(jié)果婚禮上卤橄,老公的妹妹穿的比我還像新娘。我一直安慰自己臂外,他們只是感情好窟扑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著漏健,像睡著了一般嚎货。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔫浆,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天殖属,我揣著相機(jī)與錄音,去河邊找鬼瓦盛。 笑死洗显,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谭溉。 我是一名探鬼主播墙懂,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扮念!你這毒婦竟也來(lái)了损搬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柜与,失蹤者是張志新(化名)和其女友劉穎巧勤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弄匕,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颅悉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迁匠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩瓶。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驹溃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出延曙,到底是詐尸還是另有隱情豌鹤,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布枝缔,位于F島的核電站布疙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愿卸。R本人自食惡果不足惜灵临,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趴荸。 院中可真熱鬧儒溉,春花似錦、人聲如沸发钝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)笼平。三九已至园骆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寓调,已是汗流浹背锌唾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夺英,地道東北人晌涕。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像痛悯,于是被迫代替她去往敵國(guó)和親余黎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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