1. 程式人生 > >nginx學習總結(一)

nginx學習總結(一)

一、什麼是ngnix?

Ninix是一款高效能的http伺服器反向代理伺服器電子郵件代理伺服器。官方測試ngnix能夠支撐5萬的併發連線,並且cpu、記憶體等資源消耗非常低,執行非常的穩定。

二、應用場景有哪些?

1.http伺服器。ninix是一個http伺服器可以獨立提供http服務。可以做靜態網頁伺服器。

2.虛擬主機。可以實現在一臺伺服器虛擬出多個網站。例如個人網站使用的虛擬主機

3.反向代理、負載均衡

三、ngnix的安裝準備?

(一)安裝環境

1.下載地址:http://ngnix.org

2.要求的安裝環境

(1)需要安裝gcc的環境 yum install-c++

(2)第三方的開發包

  •  PCRE

         PCRE(Perl Compatible Regular Expressions)是一個per庫,包括perl相容的正則表示式。ngnix的http模組使用pcre來解析正則表示式。所有需要在linux上安裝pcre庫。

yum install -y pcre pcre-devel

  • zlib

        zlib庫提供了很多種壓縮和解壓縮的方式。ngnix使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。

         yum install -y zlib zlib-devel

  • openssl

        OpenSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法,常用的祕鑰和證書封裝管理功能以及SSL協議,並提供豐富的應用程式供測試或其他目的使用

         ngnix不僅支援http協議,還支援https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫

四、ngnix的安裝步驟

第一步:把ngnix的原始碼包上傳到linux系統

第二步:解壓縮   tar zxf  ngnix-1.8.0.tar.gz

第三步:使用configure命令建立一個makeFile檔案

./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

注意:啟動ngnix之前,上邊將臨時檔案目錄指定為/var/temp/ngnix,需要在/var下建立temp及ngnix目錄

             mkdir /var/temp/ngnix/client -p

第四步:make

第五步:make install

五、ngnix的使用

  • 啟動ngnix

              進入sbin目錄     ./ngnix

  • 關閉ngnix

             ./ngnix -s stop          

               推薦使用     ./ngnix -s quit

  • 重啟ngnix
  1. .先關閉後啟動
  2. .重新整理配置檔案   ./ngnix is reload
  • 訪問ngnix

預設80埠

注意:是否關閉防火牆

六、配置虛擬主機

就是在一臺伺服器上啟動多個網站

如何區分不同的網站

1.域名不同

2.埠號不同

(一)通過埠號區分不同的虛擬主機

Ngnix的配置檔案   /usr/local/ninix/conf/ngnix.conf

可以配置多個server,配置了多個虛擬主機。


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    server {
        listen       81;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-81;
            index  index.html index.htm;
        }
    }

重新載入配置檔案   sbin/nginx -s reload

(二)通過域名區分虛擬主機

1.域名就是就是網站

2.DNS伺服器:把域名解析為ip地址。儲存的就是域名和IP的對映關係3

3.一個域名對應一個ip地址,一個ip地址可以被多個域名繫結。

七、ngnix實現反向代理

反向代理伺服器決定哪臺伺服器提供服務

兩個域名指向同一臺nginx伺服器,使用者訪問不同的域名顯示不同的網頁內容。

兩個域名是www.sian.com.cn和www.sohu.com

nginx伺服器使用虛擬機器192.168.101.3

第一步:安裝兩個tomcat,分別執行在8080和8081埠。

第二步:啟動兩個tomcat。

第三步:反向代理伺服器的配置

upstream tomcat1 {

server 192.168.25.148:8080;

    }

    server {

        listen       80;
        server_name  www.sina.com.cn;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat1;
            index  index.html index.htm;
        }

    }

    upstream tomcat2 {
server 192.168.25.148:8081;
    }

    server {
        listen       80;
        server_name  www.sohu.com;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat2;
            index  index.html index.htm;
        }
    }

 

第四步:nginx重新載入配置檔案

第五步:配置域名

在hosts檔案中新增域名和ip的對映關係

192.168.25.148 www.sina.com.cn

192.168.25.148 www.sohu.com

八、負載均衡

如果一個服務由多條伺服器提供,需要把負載分配到不同的伺服器處理,需要負載均衡。

可以根據伺服器的實際情況調整伺服器權重。權重越高分配的請求越多,權重越低,請求越少。預設是都

是1

 upstream tomcat2 {

server 192.168.25.148:8081;

server 192.168.25.148:8082 weight=2;

    }

 九、Ngnix實現高可用

  • 什麼是負載均衡高可用

nginx作為負載均衡器,所有請求都到了nginx,可見nginx處於非常重點的位置,如果nginx伺服器宕機後端web服務將無法提供服務,影響嚴重。

為了遮蔽負載均衡伺服器的宕機,需要建立一個備份機。主伺服器和備份機上都執行高可用(High Availability)監控程式,通過傳送諸如“I am alive”這樣的資訊來監控對方的執行狀況。當備份機不能在一定的時間內收到這樣的資訊時,它就接管主伺服器的服務IP並繼續提供負載均衡服務;當備份管理器又從主管理器收到“I am alive”這樣的資訊時,它就釋放服務IP地址,這樣的主伺服器就開始再次提供負載均衡服務

  • 什麼是keepalived

keepalived是叢集管理中保證叢集高可用的一個服務軟體,用來防止單點故障。

  Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。

  • keepalived工作原理

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。

虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個模組,分別是core、check和VRRP。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模組是來實現VRRP協議的。