Nginx學習

1.負載均衡種類

第一種:通過硬件負載解決文搂,常見的有NetScaler、F5纸肉、Radware和Array等商用的負載均衡器怎虫,價格比較昂貴

第二種:通過軟件負載解決,常見的軟件有LVS膳音、Nginx召衔、apache等,它們是基于Linux系統(tǒng)并且開源的負載均衡策略.

2.介紹

Nginx (engine x) 是一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMTP服務祭陷。

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器苍凛,并在一個BSD-like協(xié)議下發(fā)行。其特點是占有內存少兵志,并發(fā)能力強醇蝴,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好。

3.nginx應用場景

1)http服務器想罕。Nginx是一個http服務可獨立提供http服務悠栓。可以做網(wǎng)頁靜態(tài)服務器按价。
2)虛擬主機惭适。能實現(xiàn)在一臺服務器虛擬出多個網(wǎng)站。例如個人網(wǎng)站使用的虛擬主機楼镐。
3)反向代理癞志,負載均衡。當網(wǎng)站的訪問量達到一定程度后框产,單臺服務器不能滿足用戶的請求時凄杯,需要用多臺服務器集群可以使用nginx做反向代理。并且多臺服務器可以平均分擔負載秉宿,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況盾舌。

4.結構圖

image.png

Nginx負載均衡服務器的nginx.conf
配置注釋如下:

events
{
use epoll;
worker_connections 65535;
}
http
{
##upstream的負載均衡,四種調度算法##
#調度算法1:輪詢.每個請求按時間順序逐一分配到不同的后端服務器,
#如果后端某臺服務器宕機,故障系統(tǒng)被自動剔除,使用戶訪問不受影響
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#調度算法2:weight(權重).可以根據(jù)機器配置定義權重.權重越高被分配到的幾率越大
upstream webhost {
server 192.168.0.5:6666 weight=2;
server 192.168.0.7:6666 weight=3;
}
#調度算法3:ip_hash. 每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,
#有效解決了動態(tài)網(wǎng)頁存在的session共享問題
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#調度算法4:url_hash(需安裝第三方插件).此方法按訪問url的hash結果來分配請求,
#使每個url定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率.
#Nginx本身是不支持url_hash的,如果需要使用這種調度算法,必須安裝Nginx 的hash軟件包
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
hash $request_uri;
}
#調度算法5:fair(需安裝第三方插件).這是比上面兩個更加智能的負載均衡算法.
#此種算法可以依據(jù)頁面大小和加載時間長短智能地進行負載均衡,也就是根據(jù)后端服務器的響應時間來分配請求,
#響應時間短的優(yōu)先分配.Nginx本身是不支持fair的,如果需要使用這種調度算法,必須下載Nginx的upstream_fair模塊

####虛擬主機的配置(采用調度算法3:ip_hash)
server
{
listen 80;
server_name mongo.demo.com;
#對 “/” 啟用反向代理
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以下是一些反向代理的配置,可選.
proxy_set_header Host $host;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節(jié)數(shù)
client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
proxy_connect_timeout 90; #nginx跟后端服務器連接超時時間(代理連接超時)
proxy_send_timeout 90; #后端服務器數(shù)據(jù)回傳時間(代理發(fā)送超時)
proxy_read_timeout 90; #連接成功后,后端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設置
proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#設定緩存文件夾大小,大于這個值,將從upstream服務器傳
}
}
}
配置 192.168.0.4(Nginx-Server)

創(chuàng)建文件夾準備存放配置文件

$ mkdir -p /opt/confs
$ vim /opt/confs/nginx.conf
events
{
use epoll;
worker_connections 65535;
}
http
{
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
server
{
listen 80;
server_name mongo.demo.com;
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}
啟動負載均衡服務器192.168.0.4(Nginx-Server)

//配置 192.168.0.5(Nginx-Node1/Nginx-Web1)
//創(chuàng)建文件夾用于存放web頁面

$ mkdir -p /opt/html
$ vim /opt/html/index.html
//編輯內容如下:

The host is 192.168.0.5 - Node 1
啟動192.168.0.5(Nginx-Node1/Nginx-Web1)

//配置192.168.0.7(Nginx-Node2/Nginx-Web2)
//創(chuàng)建文件夾用于存放web頁面

$ mkdir -p /opt/html
$ vim /opt/html/index.html
//編輯內容如下:

The host is 192.168.0.7 - Node 2
啟動192.168.0.7(Nginx-Node2/Nginx-Web2)
  • windows下nginx配置

1蘸鲸、多臺服務器中挑選一臺作為nginx代理服務器妖谴,其他服務器作為應用服務器(本地IIS測試,三個站點)酌摇,如下圖所示:

image.png

2膝舅、我們在nginx代理服務器上,首先安裝nginx窑多,我們首先去nginx官網(wǎng)下載安裝包仍稀,如下圖所示:
官方站點下載地址
image.png

3、將安裝包解壓到D盤根目錄下埂息,文件的目錄結構技潘,如下圖所示:
image.png

4遥巴、找到nginx安裝目錄下的conf文件下的nginx.conf,默認訪問端口是8080享幽,如下圖所示:
注:如果是80端口铲掐,請先關閉IIS的默認80端口
image.png

5、我們可以添加如下配置節(jié)

#IIS配置多臺Server值桩,weight是權重摆霉,權重越大,被訪問的幾率越大
    upstream iis_server{
        server 127.0.0.1:801 weight=1;
        server 127.0.0.1:802 weight=1;
        server 127.0.0.1:803 weight=1;
    }
image.png

6奔坟、接下來我們修改端口為8080携栋,然后在location配置節(jié)下配置代理地址已經(jīng)靜態(tài)的目錄,如下圖所示:

location / {
            root   html;
            index  index.html index.htm;
            #iis_server代理地址
            proxy_pass http://iis_server;
        }
image.png

7咳秉、設置字符集婉支,以防止中文字符亂碼,如下圖所示:


image.png

8澜建、進入到nginx根目錄向挖,使用命令提示符關閉和重新啟動nginx.


image.png

9、然后我們通過nginx代理服務地址訪問霎奢,可以看到內容是隨機訪問3臺服務器上的户誓,如果我們有多臺服務器,在這多臺服務器上部署相同的應用幕侠,就可以達到負載均衡的目的帝美,如下圖所示:
image.png

image.png

image.png
Windows下Nginx的啟動、停止等命令

在Windows下使用Nginx晤硕,我們需要掌握一些基本的操作命令悼潭,比如:啟動、停止Nginx服務舞箍,重新載入Nginx等舰褪,下面我就進行一些簡單的介紹。
1疏橄、啟動:

C:\server\nginx-1.0.2>start nginx

或

C:\server\nginx-1.0.2>nginx.exe

注:建議使用第一種占拍,第二種會使你的cmd窗口一直處于執(zhí)行中,不能進行其他命令操作捎迫。

2晃酒、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

或

C:\server\nginx-1.0.2>nginx.exe -s quit


注:stop是快速停止nginx,可能并不保存相關信息窄绒;quit是完整有序的停止nginx贝次,并保存相關信息。

3彰导、重新載入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

當配置信息修改蛔翅,需要重新載入這些配置時使用此命令敲茄。

4、重新打開日志文件:

C:\server\nginx-1.0.2>nginx.exe -s reopen

5山析、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v
  • Linux下nginx配置

1.安裝nginx(服務器1)

1)首先安裝好編譯環(huán)境

[root@VM_0_10_centos tmp]# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

2)解壓nginx并切換到解壓目錄

[root@VM_0_10_centos tmp]# tar -zxf nginx-1.16.1.tar.gz
[root@VM_0_10_centos tmp]# cd nginx-1.16.1/
[root@VM_0_10_centos nginx-1.16.1]# pwd
/tmp/nginx-1.16.1

3)編譯安裝
創(chuàng)建nginx的臨時文件,存放在/var/tmp/nginx

[root@VM_0_10_centos nginx-1.16.1]# mkdir -p /var/tmp/nginx
#執(zhí)行命令
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module
image.png

如圖則表示成功

#編譯源碼堰燎,安裝nginx
[root@VM_0_10_centos nginx-1.16.1]# make
[root@VM_0_10_centos nginx-1.16.1]# make install

安裝完成,查看安裝目錄


image.png

4)啟動nginx服務

[root@VM_0_10_centos nginx]# cd sbin/
[root@VM_0_10_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
#查看nginx進程是否啟動
[root@VM_0_10_centos sbin]# ps -aux | grep nginx

image.png

注意:其中master為主進程worker為工作進程

5)退出nginx

1 [root@VM_0_10_centos sbin]# ./nginx -s quit

6)重啟nginx

1 [root@VM_0_10_centos sbin]# pwd
2 /usr/local/nginx/sbin
3 [root@VM_0_10_centos sbin]# ./nginx -s reload

7)測試nginx

在瀏覽器上通過ip訪問:http://localhost盖腿,出現(xiàn)如下界面即成功

image.png

2.安裝tomcat服務(服務器1爽待,服務器2)

下載tomcat

查看服務端口進程是否啟動


image.png
3.配置nginx負載(服務器1)

1)修改配置文件nginx.conf

[root@VM_0_10_centos ~]# cd /usr/local/nginx/conf/
[root@VM_0_10_centos conf]# vi nginx.conf

配置負載均衡损同,配置完保存并退出

#20190827添加
    upstream testTomcat{
        #設置分權翩腐,權重越高優(yōu)先訪問
        server 106.53.73.200:8888 weight=1;
        server 182.254.184.102:8888 weight=1;
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #所有請求都在這里去找分配
        location / {
            #root   html;
            index  index.html index.htm;
            #使用test分配規(guī)則,即剛剛自定義添加的upstream節(jié)點
            proxy_pass http://testTomcat/test/;
        }
 }

重新啟動nginx服務

1 [root@VM_0_10_centos conf]# /usr/local/nginx/sbin/nginx -s reload

2)測試負載均衡

通過瀏覽器訪問負載ip膏燃,出現(xiàn)下圖即負載成功


image.png

image.png
  • 參考:

Nginx中文參考手冊,教程
幽冥狂的博客

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末茂卦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子组哩,更是在濱河造成了極大的恐慌等龙,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伶贰,死亡現(xiàn)場離奇詭異蛛砰,居然都是意外死亡,警方通過查閱死者的電腦和手機黍衙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門泥畅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琅翻,你說我怎么就攤上這事位仁。” “怎么了方椎?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵聂抢,是天一觀的道長。 經(jīng)常有香客問我棠众,道長琳疏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任闸拿,我火速辦了婚禮空盼,結果婚禮上,老公的妹妹穿的比我還像新娘胸墙。我一直安慰自己我注,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布迟隅。 她就那樣靜靜地躺著但骨,像睡著了一般励七。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奔缠,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天掠抬,我揣著相機與錄音,去河邊找鬼校哎。 笑死两波,一個胖子當著我的面吹牛,可吹牛的內容都是我干的闷哆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼抱怔,長吁一口氣:“原來是場噩夢啊……” “哼劣坊!你這毒婦竟也來了?” 一聲冷哼從身側響起屈留,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤局冰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后灌危,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體康二,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年勇蝙,在試婚紗的時候發(fā)現(xiàn)自己被綠了沫勿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡浅蚪,死狀恐怖藕帜,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情惜傲,我是刑警寧澤洽故,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站盗誊,受9級特大地震影響时甚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜哈踱,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一荒适、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧开镣,春花似錦刀诬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽质欲。三九已至,卻和暖如春糠馆,著一層夾襖步出監(jiān)牢的瞬間嘶伟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工又碌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留九昧,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓毕匀,卻偏偏與公主長得像铸鹰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子期揪,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • 1.什么是Nginx掉奄?Nginx是一個高性能的HTTP反向代理服務器规个,特點是占用內存小凤薛,并發(fā)能力強。Nginx是專...
    yunqing_71閱讀 395評論 0 1
  • 一诞仓、Nginx簡介 1.什么是Nginx Nginx(engine x)是一個高性能的HTTP和反向代理服務缤苫,Ni...
    青年心路閱讀 308評論 0 0
  • 1.什么是負載均衡?通過某種負載分擔技術墅拭,將外部發(fā)送來的請求按照某種策略分配到服務器集合的某一臺服務器上活玲,而接收到...
    少艾_91df閱讀 491評論 0 0
  • 概述 什么是 Nginx?Nginx (engine x) 是一款輕量級的 Web 服務器 、反向代理服務器及電子...
    weisen閱讀 586評論 0 0
  • 上了半天班谍婉,下午出去了舒憾,廣州的人真多,回南天的天氣加上周日的人穗熬,讓人喘不過氣镀迂,在這座城市里呼吸著突然變的很寂寥,感...
    希望每天開心一點閱讀 80評論 0 0