1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        給小白的Nginx入門(mén)指南-30分鐘從小白到專(zhuān)家

        共 13134字,需瀏覽 27分鐘

         ·

        2021-06-25 07:12

        h以前寫(xiě)過(guò)一些Nginx的文章,但都是用到什么說(shuō)什么,沒(méi)有一個(gè)完整系統(tǒng)的總結(jié)。趁最近有時(shí)間,打算將Nginx相關(guān)的內(nèi)容重新整理一下。

        01Nginx安裝

        1.1 Nginx簡(jiǎn)介

        1.1.1?什么是Nginx

        Nginx是一款高性能的http 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā),官方測(cè)試nginx能夠支支撐5萬(wàn)并發(fā)鏈接,并且cpu、內(nèi)存等資源消耗卻非常低,運(yùn)行非常穩(wěn)定。

        1.1.2?Nginx的應(yīng)用場(chǎng)景

        1、http服務(wù)器。Nginx是一個(gè)http服務(wù)可以獨(dú)立提供http服務(wù)??梢宰鼍W(wǎng)頁(yè)靜態(tài)服務(wù)器。

        2、虛擬主機(jī)??梢詫?shí)現(xiàn)在一臺(tái)服務(wù)器虛擬出多個(gè)網(wǎng)站。例如個(gè)人網(wǎng)站使用的虛擬主機(jī)。

        3、反向代理,負(fù)載均衡。當(dāng)網(wǎng)站的訪(fǎng)問(wèn)量達(dá)到一定程度后,單臺(tái)服務(wù)器不能滿(mǎn)足用戶(hù)的請(qǐng)求時(shí),需要用多臺(tái)服務(wù)器集群可以使用nginx做反向代理。并且多臺(tái)服務(wù)器可以平均分擔(dān)負(fù)載,不會(huì)因?yàn)槟撑_(tái)服務(wù)器負(fù)載高宕機(jī)而某臺(tái)服務(wù)器閑置的情況。

        1.2 Nginx安裝

        1.2.1?下載

        2.ginx.org/en/download.html,我這邊使用的是nginx1.8.0版本,大家可以下載最新穩(wěn)定版。


        1482f7f33d66ca8e8e16e0ce2fe99da2.webp



        1.2.2?安裝

        i. 安裝環(huán)境

        我這里是Centos7.0作為安裝環(huán)境,除此之外還要安裝gcc,pcre等軟件,都是一個(gè)命令就安裝的,這里就不一一細(xì)說(shuō)了。

        安裝的前提條件:

        gcc

          安裝nginx需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴(lài)gcc環(huán)境,如果沒(méi)有g(shù)cc環(huán)境,需要安裝gcc。

        yum install gcc-c++

          

        PCRE

        PCRE(Perl Compatible Regular Expressions)是一個(gè)Perl庫(kù),包括 perl 兼容的正則表達(dá)式庫(kù)。nginx的http模塊使用pcre來(lái)解析正則表達(dá)式,所以需要在linux上安裝pcre庫(kù)。

        yum install -y pcre pcre-devel

        注:pcre-devel是使用pcre開(kāi)發(fā)的一個(gè)二次開(kāi)發(fā)庫(kù)。nginx也需要此庫(kù)。


        zlib

          zlib庫(kù)提供了很多種壓縮和解壓縮的方式,nginx使用zlib對(duì)http包的內(nèi)容進(jìn)行g(shù)zip,所以需要在linux上安裝zlib庫(kù)。

        yum install -y zlib zlib-devel


        openssl

        OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫(kù),囊括主要的密碼算法、常用的密鑰和證書(shū)封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。

        nginx不僅支持http協(xié)議,還支持https(即在ssl協(xié)議上傳輸http),所以需要在linux安裝openssl庫(kù)。

        yum install -y openssl openssl-devel


        ii. 編譯安裝

        安裝環(huán)境準(zhǔn)備好之后,下面就開(kāi)始安裝,具體安裝步驟如下:

        步驟1:將nginx-1.8.0.tar.gz拷貝至linux服務(wù)器,并解壓。

        解壓:

        ar -zxvf nginx-1.8.0.tar.gzcd nginx-1.8.0


        步驟2創(chuàng)建一個(gè)makefile文件。通過(guò)./configure 命令來(lái)配置相關(guān)的參數(shù)。具體命令如下:

        ./configure --help查詢(xún)?cè)敿?xì)參數(shù)

        ./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/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi注意:上邊將臨時(shí)文件目錄指定為/var/temp/nginx,需要在/var下創(chuàng)建temp及nginx目錄

        步驟3編譯

        make

        7fce51e665ce0b9953521e0b1dd30919.webp


        步驟4安裝

        make  install

        安裝成功查看安裝目錄 :

        3d20dfe87e91696b9948faa5aab81c20.webp

        1.2.3?啟動(dòng)nginx

        Nginx安裝成功之后,接下來(lái)看看如何啟動(dòng)nginx。

        首先,進(jìn)入Nginx的安裝目錄,使用如下命令:

        cd /usr/local/nginx/sbin/

        然后,執(zhí)行啟動(dòng)命令

        ./nginx

        最后,查詢(xún)nginx進(jìn)程,確認(rèn)Nginx 是否啟動(dòng)

        ps aux|grep nginx

        可以看到如下輸出:

        13d180442000078c5ecdaa341a28c809.webp

        注意:執(zhí)行./nginx啟動(dòng)nginx,這里可以-c指定加載的nginx配置文件,如下:

        ./nginx -c /usr/local/nginx/conf/nginx.conf

        如果不指定-c,nginx在啟動(dòng)時(shí)默認(rèn)加載conf/nginx.conf文件,此文件的地址也可以在編譯安裝nginx時(shí)指定./configure的參數(shù)(--conf-path= 指向配置文件(nginx.conf))

        1.2.4?停止nginx

        方式1:快速停止:

        cd /usr/local/nginx/sbin./nginx -s stop

        此方式相當(dāng)于先查出nginx進(jìn)程id再使用kill命令強(qiáng)制殺掉進(jìn)程。


        方式2:完整停止(建議使用):

        cd /usr/local/nginx/sbin./nginx -s quit

        此方式停止步驟是待nginx進(jìn)程處理任務(wù)完畢進(jìn)行停止。


        1.2.5?重啟nginx

        方式1:先停止再啟動(dòng)(建議使用):

        對(duì)nginx進(jìn)行重啟相當(dāng)于先停止nginx再啟動(dòng)nginx,即先執(zhí)行停止命令再執(zhí)行啟動(dòng)命令。

        如下:

        ./nginx -s quit./nginx


        方式2:重新加載配置文件:

        當(dāng)nginx的配置文件nginx.conf修改后,要想讓配置生效需要重啟nginx,使用-s reload不用先停止nginx再啟動(dòng)nginx即可將配置信息在nginx中生效,如下:

        ./nginx -s reload
        1.3 安裝測(cè)試

        nginx安裝成功,啟動(dòng)nginx,即可訪(fǎng)問(wèn)虛擬機(jī)上的nginx:

        d77e6476e9fdbe6cf5c5b6a2aa870ca7.webp



        到這說(shuō)明nginx基本上安裝成功。

        02什么是虛擬主機(jī)

        2.1 什么是虛擬主機(jī)

        虛擬主機(jī)是一種特殊的軟硬件技術(shù),它可以將網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī)分成多個(gè)虛擬主機(jī),每個(gè)虛擬主機(jī)可以獨(dú)立對(duì)外提供www服務(wù),這樣就可以實(shí)現(xiàn)一臺(tái)主機(jī)對(duì)外提供多個(gè)web服務(wù),每個(gè)虛擬主機(jī)之間是獨(dú)立的,互不影響的。如下圖所示:


        30cbc06eaabcbf9a6f93b76271651a00.webp

        通過(guò)nginx可以實(shí)現(xiàn)虛擬主機(jī)的配置,nginx支持三種類(lèi)型的虛擬主機(jī)配置:

        1、基于ip的虛擬主機(jī)

        2、基于域名的虛擬主機(jī)

        3、基于端口的虛擬主機(jī)

        實(shí)際使用的過(guò)程中,我們一般常用的是用域名或是端口來(lái)區(qū)分web服務(wù)。只不過(guò)我這里為了講的全面一點(diǎn),會(huì)把三種配置都講一講。

        2.2 Nginx配置文件的結(jié)構(gòu)

        介紹了什么是虛擬主機(jī),下面介紹下nginx的配置文件結(jié)構(gòu),虛擬主機(jī)配置的位置,具體如下:

        ......
        events { .......}
        http{
        ....... server{ ....... } server{ ....... }}

        每個(gè)server就是一個(gè)虛擬主機(jī)。

        03基于ip的虛擬主機(jī)配置

        Linux操作系統(tǒng)允許添加IP別名,就是在一塊物理網(wǎng)卡上綁定多個(gè)lP地址。這樣就能夠在使用單一網(wǎng)卡的同一個(gè)服務(wù)器上運(yùn)行多個(gè)基于IP的虛擬主機(jī)。

        3.1?應(yīng)用場(chǎng)景

        一臺(tái)nginx服務(wù)器綁定兩個(gè)ip:192.168.78.132、192.168.78.133,訪(fǎng)問(wèn)不同的ip請(qǐng)求不同的html目錄,即:

        訪(fǎng)問(wèn)http://192.168.78.132將訪(fǎng)問(wèn)html132目錄下的html網(wǎng)頁(yè)

        訪(fǎng)問(wèn)http://192.168.78.133將訪(fǎng)問(wèn)html133目錄下的html網(wǎng)頁(yè)

        3.2?準(zhǔn)備環(huán)境

        創(chuàng)建192.168.78.132 的虛擬機(jī),保證本地電腦和虛擬網(wǎng)絡(luò)通暢。在192.168.78.132上安裝nginx。這個(gè)之前講過(guò)nginx 的源碼安裝,大家可以去看看這篇文章:https://www.cnblogs.com/zhangweizhong/p/11378512.html

        3.3?配置基于ip的虛擬主機(jī)

        i. 綁定多ip

        步驟1:修改網(wǎng)絡(luò)配置文件,進(jìn)入到/etc/sysconfig/network-scripts,編輯ifcfg-ens33文件如下:

        TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no# BOOTPROTO=dhcp 注意區(qū)別?。?!DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=26c2f3f8-62c5-4571-80e2-ca394cfd43daDEVICE=ens33ONBOOT=yesZONE=public
        # 注意區(qū)別IPADDR0=192.168.78.132PREFIX0=24
        IPADDR1=192.168.78.133PREFIX1=16

        步驟2:保存修改,重啟網(wǎng)絡(luò)

        [root@bogon network-scripts]# systemctl restart network

        ii. 創(chuàng)建兩個(gè)web網(wǎng)站

        進(jìn)入/usr/local/nginx 目錄,將原來(lái)nginx的html目錄拷貝兩個(gè)目錄 “html132”和“html133”,為了方便測(cè)試需要修改每個(gè)目錄下的index.html內(nèi)容使之個(gè)性化。

        cd /usr/local/nginxcp -r html html132cp -r html html133


        iii. 配置虛擬主機(jī)

        修改/usr/local/nginx/conf/nginx.conf文件,添加兩個(gè)虛擬主機(jī),如下:

        #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; sendfile on; keepalive_timeout 65; #配置虛擬主機(jī)192.168.78.132 server { #監(jiān)聽(tīng)的ip和端口,配置192.168.78.132:80 listen 80; #虛擬主機(jī)名稱(chēng)這里配置ip地址 server_name 192.168.78.132; #所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location location / { #使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄 #比如訪(fǎng)問(wèn)http://ip/test.html將找到/usr/local/html3/test.html #比如訪(fǎng)問(wèn)http://ip/item/test.html將找到/usr/local/html3/item/test.html root /usr/local/nginx/html132; #指定歡迎頁(yè)面,按從左到右順序查找 index index.html index.htm; } } #配置虛擬主機(jī)192.168.78.133 server { listen 80; server_name 192.168.78.133; location / { root /usr/local/nginx/html133; index index.html index.htm; } }}
        iv. 測(cè)試

        重新啟動(dòng)nginx,分別訪(fǎng)問(wèn)上面配置的兩個(gè)ip地址,觀察頁(yè)面的返回情況。

        訪(fǎng)問(wèn)http://192.168.78.132/

        333ebfc698d6ebbb638b33d514d152de.webp


        訪(fǎng)問(wèn)http://192.168.78.133/

        dc7c37319d8d33dbb8fa4468a1f6f2ca.webp

        可以看到,訪(fǎng)問(wèn)不同的ip,nginx轉(zhuǎn)發(fā)的是不同的網(wǎng)站。

        04配置基于端口的虛擬主機(jī)

        前面講了如何配置基于IP的虛擬主機(jī),今天就來(lái)講講Nginx如何基于端口的虛擬主機(jī)。

        4.1?應(yīng)用場(chǎng)景

        nginx對(duì)外提供81和82兩個(gè)端口監(jiān)聽(tīng)服務(wù)。

        訪(fǎng)問(wèn)http://192.168.78.132:81端口則請(qǐng)求html81目錄下的html

        請(qǐng)求http://192.168.78.132:82端口則請(qǐng)求html82目錄下的html

        4.2?環(huán)境準(zhǔn)備

        1. 創(chuàng)建192.168.78.132虛擬機(jī),保證本地電腦和虛擬網(wǎng)絡(luò)通暢。

        2. 在192.168.78.132上安裝nginx。

        4.3?配置基于端口的虛擬主機(jī)

        步驟1:創(chuàng)建html目錄

        將原來(lái)nginx的html目錄拷貝兩個(gè)目錄:html81和html82,為了方便測(cè)試需要修改每個(gè)目錄下的index.html內(nèi)容不一樣。

        ?

        步驟2:配置虛擬主機(jī)

        修改/usr/local/nginx/conf/nginx.conf文件,添加兩個(gè)虛擬主機(jī)

        #user nobody;worker_processes 1;events {worker_connections 1024;}http {      include       mime.types;      default_type  application/octet-stream;      sendfile        on;      keepalive_timeout  65;  #配置虛擬主機(jī)  server {    #監(jiān)聽(tīng)的ip和端口,配置80    listen 80;    #虛擬主機(jī)名稱(chēng)這里配置ip地址    server_name 192.168.101.3;    #所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location    location / {      #使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄#比如訪(fǎng)問(wèn)http://ip/test.html將找到/usr/local/html3/test.html                   #比如訪(fǎng)問(wèn)http://ip/item/test.html將找到/usr/local/html3/item/test.html      root /usr/local/nginx/html80;#指定歡迎頁(yè)面,按從左到右順序查找                  index  index.html index.htm;     }   }      #配置虛擬主機(jī)  server {    listen 8080;    server_name 192.168.101.3;            location / {                  root   /usr/local/nginx/html8080;                  index  index.html index.htm;     }      }}


        4.4?驗(yàn)證測(cè)試

        重新加載配置nginx配置文件,查看端口監(jiān)聽(tīng)狀態(tài):

        訪(fǎng)問(wèn)http://192.168.78.132:81

        ca11c5cf0a0bccbef9a458985138e573.webp

        ?

        訪(fǎng)問(wèn)http://192.168.78.132:82

        ?eed15dba0014dc17bcf13dfd6d0179e6.webp

        ?

        以上,就把nginx 基于ip的配置虛擬主機(jī)講完了。后面會(huì)繼續(xù)講基于域名配置虛擬主機(jī)。

        05基于域名配置虛擬主機(jī)

        5.1?應(yīng)用場(chǎng)景

        兩個(gè)域名指向同一臺(tái)nginx服務(wù)器,用戶(hù)訪(fǎng)問(wèn)不同的域名顯示不同的網(wǎng)頁(yè)內(nèi)容。

        兩個(gè)域名是aaa.test.com和bbb.test.com

        nginx服務(wù)器使用虛擬機(jī)192.168.78.132

        ?

        5.2 準(zhǔn)備環(huán)境

        1. 創(chuàng)建192.168.78.132虛擬機(jī),保證本地電腦和虛擬網(wǎng)絡(luò)通暢。

        2. 在192.168.78.132上安裝nginx。

        3. 通過(guò)host文件指定aaa.test.com和bbb.test.com對(duì)應(yīng)192.168.78.132虛擬機(jī):

        修改window的hosts文件:(C:\Windows\System32\drivers\etc)

        192.168.78.132 aaa.test.com192.168.78.132 bbb.test.com

        ?

        5.3?配置虛擬主機(jī)

        步驟1:html目錄創(chuàng)建

        1. 在192.168.78.132上創(chuàng)建/usr/local/aaa_html,此目錄為aaa.test.com域名訪(fǎng)問(wèn)的目錄

        2. 在192.168.78.132上創(chuàng)建/usr/local/bbb_html,此目錄為bbb.test.com域名訪(fǎng)問(wèn)的目錄

        3. 將/usr/local/nginx/html中的內(nèi)容拷貝分別拷貝到上邊兩個(gè)目錄中,為了方便測(cè)試需要修改每個(gè)目錄下的index.html內(nèi)容使之個(gè)性化。

        ?

        步驟2:修改配置文件

        修改/usr/local/nginx/conf/nginx.conf文件,添加兩個(gè)虛擬主機(jī),如下:

        #配置虛擬主機(jī)aaa.test.comserver {
        #監(jiān)聽(tīng)的ip和端口,配置本機(jī)ip和端口 listen 192.168.78.132:80;
        #虛擬主機(jī)名稱(chēng)是aaa.test.com,請(qǐng)求域名aaa.test.com的url將由此server配置解析 server_name aaa.test.com;
        #所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location location / { #使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄 #比如訪(fǎng)問(wèn)http://ip/test.html將找到/usr/local/aaa_html/test.html
        #比如訪(fǎng)問(wèn)http://ip/item/test.html將找到/usr/local/aaa_html/item/test.html root /usr/local/aaa_html;
        #指定歡迎頁(yè)面,按從左到右順序查找 index index.html index.htm; }}
        #配置虛擬主機(jī)bbb.test.comserver { listen 192.168.78.132:80; server_name bbb.test.com;
        location / { root /usr/local/bbb_html; index index.html index.htm; }}

        ?

        5.4?驗(yàn)證測(cè)試

        分別訪(fǎng)問(wèn)aaa.test.com、bbb.test.com,看效果如何:?

        9a88636a11757a1dc246e8df2fe783e8.webp?

        555bd0c09adb8e80842cdbe686029d75.webp

        ?

        以上, 就把nginx基于域名的虛擬主機(jī)配置說(shuō)完了。通過(guò)這三篇文章,介紹了nginx配置虛擬主機(jī)的三種方式,分別是基于ip 的虛擬主機(jī)配置,基于端口的虛擬主機(jī)配置和基于域名的虛擬主機(jī)配置。

        其實(shí)Nginx最常用的還是基于域名的虛擬主機(jī)配置。


        06配置Nginx和Tomcat實(shí)現(xiàn)反向代理

        6.1?什么是反向代理

        正向代理:通常的代理服務(wù)器,只用于代理內(nèi)部網(wǎng)絡(luò)對(duì)Internet的連接請(qǐng)求,客戶(hù)機(jī)必須指定代理服務(wù)器,并將本來(lái)要直接發(fā)送到Web服務(wù)器上的http請(qǐng)求發(fā)送到代理服務(wù)器中由代理服務(wù)器向Internet上的web服務(wù)器發(fā)起請(qǐng)求,最終達(dá)到客戶(hù)機(jī)上網(wǎng)的目的。這就是所謂的正向代理,一般就直接叫代理。

        反向代理(Reverse Proxy):則是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶(hù)端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。

        Nginx 只做請(qǐng)求的轉(zhuǎn)發(fā),后臺(tái)有多個(gè)http服務(wù)器提供服務(wù),nginx的作用就是把請(qǐng)求轉(zhuǎn)發(fā)給后面的服務(wù)器,決定吧請(qǐng)求轉(zhuǎn)發(fā)給誰(shuí)處理。如下圖:


        8ede8a84da0607bc9bafcd8f853f83cb.webp


        6.2?環(huán)境準(zhǔn)備

        兩個(gè)tomcat服務(wù)通過(guò)nginx反向代理,本例子使用三臺(tái)虛擬機(jī)進(jìn)行測(cè)試,

        nginx服務(wù)器:192.168.78.132

        tomcat1服務(wù)器:192.168.78.134

        tomcat2服務(wù)器:192.168.78.135

        如下圖:


        8f8e0a37acb6c5347f0f974e2fa0f4af.webp

          1. 兩臺(tái) tomcat 服務(wù)器,我這里使用的是使用apache-tomcat-7.0.57版本,在192.168.78.134和192.168.78.135虛擬機(jī)上啟動(dòng)tomcat。

          2. Nginx 服務(wù)器,這個(gè)之前安裝過(guò),ip地址是:192.168.78.132

          3. 修改兩個(gè)tomcat下的webapps/ROOT/index.jsp的內(nèi)容,使用tomcat1和tomcat2兩個(gè)服務(wù)首頁(yè)顯示不同的內(nèi)容。

          4. 通過(guò)host文件指定aaa.test.com和bbb.test.com對(duì)應(yīng)192.168.78.132虛擬機(jī):修改window的hosts文件:(C:\Windows\System32\drivers\etc)

        192.168.78.132 aaa.test.com192.168.78.132 bbb.test.com


        6.3?配置Nginx反向代理

        根據(jù)上邊的需求在nginx.conf文件中配置反向代理,如下:

        #配置一個(gè)代理即tomcat1服務(wù)器upstream tomcat_server1 {    server 192.168.78.134:8080;}
        #配置一個(gè)代理即tomcat2服務(wù)器upstream tomcat_server2 { server 192.168.78.135:8080;}
        #配置一個(gè)虛擬主機(jī)server { listen 80; server_name aaa.test.com; location / { #域名aaa.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server1即tomcat1服務(wù)上 proxy_pass http://tomcat_server1;
        #歡迎頁(yè)面,按照從左到右的順序查找頁(yè)面 index index.jsp index.html index.htm;
        }}
        server { listen 80; server_name bbb.test.com; location / { #域名bbb.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server2即tomcat2服務(wù)上 proxy_pass http://tomcat_server2;
        index index.jsp index.html index.htm; }}


        6.4?驗(yàn)證測(cè)試

        分別訪(fǎng)問(wèn)aaa.test.com、bbb.test.com測(cè)試反向代理。

        35754b3c6d9248148e65bae8ca1be669.webp



        b552261244a8f9df7ee6b962bc12d84f.webp


        通過(guò)上面的截圖可以看出:

        請(qǐng)求訪(fǎng)問(wèn)aaa.test.com通過(guò)nginx代理訪(fǎng)問(wèn)tomcat1,

        請(qǐng)求訪(fǎng)問(wèn)bbb.test.com通過(guò)nginx代理訪(fǎng)問(wèn)tomcat2。


        以上,就把如何配置nginx和tomcat實(shí)現(xiàn)反向代理講完了。雖然步驟比較多,但是操作起來(lái)還是比較簡(jiǎn)單的。

        07配置實(shí)現(xiàn)負(fù)載均衡

        7.1?什么是負(fù)載均衡

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

        其實(shí)說(shuō)白了就是將請(qǐng)求分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。

        33694bd8c2dacd994596a33856a246f8.webp

        ?

        7.2 實(shí)現(xiàn)方案

        ???????? nginx作為負(fù)載均衡服務(wù)器,用戶(hù)請(qǐng)求先到達(dá)nginx,再由nginx根據(jù)負(fù)載配置將請(qǐng)求轉(zhuǎn)發(fā)至 tomcat服務(wù)器。

        ???????? nginx負(fù)載均衡服務(wù)器:192.168.78.132

        ???????? tomcat1服務(wù)器:192.168.78.134

        ???????? tomcat2服務(wù)器:192.168.78.135

        ?

        7.3?環(huán)境準(zhǔn)備

          1. 兩臺(tái) tomcat 服務(wù)器,我這里使用的是使用apache-tomcat-7.0.57版本,在192.168.78.134和192.168.78.135虛擬機(jī)上啟動(dòng)tomcat。

          2. Nginx 服務(wù)器,這個(gè)之前安裝過(guò),ip地址是:192.168.78.132

          3. 修改兩個(gè)tomcat下的webapps/ROOT/index.jsp的內(nèi)容,使用tomcat1和tomcat2兩個(gè)服務(wù)首頁(yè)顯示不同的內(nèi)容。

          4. 通過(guò)host文件指定aaa.test.com的域名解析,對(duì)應(yīng)192.168.78.132虛擬機(jī):修改window的hosts文件:(C:\Windows\System32\drivers\etc)

        192.168.78.132 aaa.test.com

        7.4?配置實(shí)現(xiàn)負(fù)載均衡

        根據(jù)上邊的需求在nginx.conf文件中的http節(jié)點(diǎn)添加如下配置:

        upstream tomcat_server_pool{
        server 192.168.101.5:8080 weight=10;
        server 192.168.101.6:8080 weight=10;
        }

        server {
        listen 80;
        server_name aaa.test.com;
        location / {
        proxy_pass http://tomcat_server_pool;
        index index.jsp index.html index.htm;
        }
        }

        相關(guān)參數(shù)說(shuō)明:

        down:表示單前的server暫時(shí)不參與負(fù)載

        weight :默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。

        max_fails:允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤

        fail_timeout:max_fails 次失敗后,暫停的時(shí)間。

        backup:其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。


        7.5?驗(yàn)證測(cè)試?

        多次請(qǐng)求aaa.test.com,我們會(huì)發(fā)現(xiàn)nginx會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到各個(gè)tomcat服務(wù)器上。

        2c6058652f6bce65bc1448e1949573af.webp0ecdb2ffb6fdc90e376e5b3390e12698.webp

        ?

        以上就將Nginx負(fù)載均衡介紹完了。后面將會(huì)介紹Nginx的高可用。


        08服務(wù)器的日志管理及配置

        之前講了如何配置Nginx虛擬主機(jī),最近有些人問(wèn)我Nginx日志相關(guān)的配置的問(wèn)題。

        所以,今天就來(lái)說(shuō)說(shuō)如何配置Nginx的日志。?

        8.1?日志格式

        我們觀察Nginx配置文件的server段,可以看到如下類(lèi)似信息

        #access_log logs/host.access.log main;
        這說(shuō)明 該server, 它的訪(fǎng)問(wèn)日志的文件是? logs/host.access.log ,

        使用的日志格式是”main”格式,除了main格式,你可以自定義其他格式。

        ?

        main格式是什么?

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        # '$status $body_bytes_sent "$http_referer" '
        # '"$http_user_agent" "$http_x_forwarded_for"';

        main格式是我們定義好一種日志的格式,并起個(gè)名字,便于引用。

        以上面的例子,main類(lèi)型的日志,記錄的 remote_addr.... http_x_forwarded_for等選項(xiàng).

        ?

        8.2?定義日志內(nèi)容

        日志格式是指日志記錄哪些內(nèi)容和屬性字段。nginx默認(rèn)的日志格式: main,記錄這么幾項(xiàng):

        遠(yuǎn)程IP-? 遠(yuǎn)程用戶(hù)/用戶(hù)時(shí)間 請(qǐng)求方法(如GET/POST) 請(qǐng)求體body長(zhǎng)度 referer來(lái)源信息

        http-user-agent?用戶(hù)代理/蜘蛛 ,被轉(zhuǎn)發(fā)的請(qǐng)求的原始IP

        http_x_forwarded_for?在經(jīng)過(guò)代理時(shí),代理把你的本來(lái)IP加在此頭信息中,傳輸你的原始IP

        ?

        8.3?配置Nginx日志

        步驟1:聲明一個(gè)新的log_format并命名 mylog?

        log_format mylog '$remote_addr- "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';

        步驟2:在下面的server/location,我們就可以引用 mylog?

        在server段中,這樣來(lái)聲明

        server {  listen 8080; #端口  server_name 192.168.1.204; #域名  location / {    root /var/www/html;     #根目錄    index index.html;    access_log      logs/access.log  mylog;          }    }

        ?

        步驟3:Nginx允許針對(duì)不同的server做不同的Log ,(有的web服務(wù)器不支持,如lighttp)

        access_log logs/access_8080.log mylog;  # 聲明log  log位置   log格式;


        步驟4:查看日志記錄

        nginx日志配置完成后,重啟,查看日志是否生成成功

        80d65f009a1bd51acab58ffc828a9765.webp

        ?

        8.4?生產(chǎn)環(huán)境Nginx配置

        上面的日志配置也只是簡(jiǎn)單介紹,實(shí)際生產(chǎn)環(huán)境一般是按日期分割存儲(chǔ)的。

        具體實(shí)現(xiàn)方式:shell+定時(shí)任務(wù)+nginx信號(hào)管理,完成日志按日期存儲(chǔ)

        分析思路

        凌晨00:00:01,把昨天的日志重命名,放在相應(yīng)的目錄下。

        再USR1信息號(hào)控制nginx重新生成新的日志文件。

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

        步驟1:增加按日期備份日志的腳本

        創(chuàng)建splitlog.sh文件,具體腳本如下:

        #!/bin/bashbase_path='/usr/local/nginx/logs'log_path=$(date -d yesterday +"%Y%m")day=$(date -d yesterday +"%d")mkdir -p $base_path/$log_pathmv $base_path/access.log $base_path/$log_path/access_$day.log#echo $base_path/$log_path/access_$day.logkill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

        以上腳本來(lái)著互聯(lián)網(wǎng),大家學(xué)習(xí)參照下即可。

        ?

        步驟2:增加定時(shí)任務(wù)

        01?00?*?*?*?/xxx/path/splitlog.sh

        每天0時(shí)1分(建議在02-04點(diǎn)之間,系統(tǒng)負(fù)載小)

        ?

        以上,就把Nginx日志配置介紹完了,是不是很簡(jiǎn)單的。


        瀏覽 67
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            www.老色| 麻豆三极片 | 色戒完整版2小时38分片集网 | 亚洲视频一区二区三区 | asian艳丽少妇裸体魄pics | 色婷婷18| 色草AV | 天天色艹| 国产裸体美女永久免费 | 久久综合五月天 |