<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 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ǎ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)站的訪問(wèn)量達(dá)到一定程度后,單臺(tái)服務(wù)器不能滿足用戶的請(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)行編譯,編譯依賴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查詢?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

          最后,查詢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,即可訪問(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支持三種類型的虛擬主機(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,訪問(wèn)不同的ip請(qǐng)求不同的html目錄,即:

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

          訪問(wèn)http://192.168.78.133將訪問(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ī)名稱這里配置ip地址 server_name 192.168.78.132; #所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location location / { #使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄 #比如訪問(wèn)http://ip/test.html將找到/usr/local/html3/test.html #比如訪問(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,分別訪問(wèn)上面配置的兩個(gè)ip地址,觀察頁(yè)面的返回情況。

          訪問(wèn)http://192.168.78.132/

          333ebfc698d6ebbb638b33d514d152de.webp


          訪問(wèn)http://192.168.78.133/

          dc7c37319d8d33dbb8fa4468a1f6f2ca.webp

          可以看到,訪問(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ù)。

          訪問(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ī)名稱這里配置ip地址    server_name 192.168.101.3;    #所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location    location / {      #使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄#比如訪問(wèn)http://ip/test.html將找到/usr/local/html3/test.html                   #比如訪問(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):

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

          ca11c5cf0a0bccbef9a458985138e573.webp

          ?

          訪問(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ù)器,用戶訪問(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域名訪問(wèn)的目錄

          2. 在192.168.78.132上創(chuàng)建/usr/local/bbb_html,此目錄為bbb.test.com域名訪問(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ī)名稱是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è)存放目錄 #比如訪問(wèn)http://ip/test.html將找到/usr/local/aaa_html/test.html
          #比如訪問(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è)試

          分別訪問(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)求,客戶機(jī)必須指定代理服務(wù)器,并將本來(lái)要直接發(fā)送到Web服務(wù)器上的http請(qǐng)求發(fā)送到代理服務(wù)器中由代理服務(wù)器向Internet上的web服務(wù)器發(fā)起請(qǐng)求,最終達(dá)到客戶機(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)求連接的客戶端,此時(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è)試

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

          35754b3c6d9248148e65bae8ca1be669.webp



          b552261244a8f9df7ee6b962bc12d84f.webp


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

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

          請(qǐng)求訪問(wèn)bbb.test.com通過(guò)nginx代理訪問(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ù)器,用戶請(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段,可以看到如下類似信息

          #access_log logs/host.access.log main;
          這說(shuō)明 該server, 它的訪問(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類型的日志,記錄的 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)程用戶/用戶時(shí)間 請(qǐng)求方法(如GET/POST) 請(qǐng)求體body長(zhǎng)度 referer來(lái)源信息

          http-user-agent?用戶代理/蜘蛛 ,被轉(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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐亚洲第一在线 | 天天拍夜夜爽 | 国内一级免费黄色视频在线网展览器的封 | 91精品干 | 日本A片在线播放 |