Nginx詳解

什麼是nginx

Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。官方測試nginx能夠支支撐5萬併發鏈接,並且cpu、內存等資源消耗卻非常低,運行非常穩定。

  1. nginx安裝

    1. 下載

 

進入http://nginx.org/en/download.html 下載nginx1.8.0版本(當前最新穩定版本)。

  1. 編譯安裝

將nginx-1.8.0.tar.gz拷貝至linux服務器。

 

解壓:

tar -zxvf nginx-1.8.0.tar.gz

cd nginx-1.8.0

 

  1. configure

./configure --help查詢詳細參數(參考本教程附錄部分:nginx編譯參數)

 

參數設置如下:

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

 

注意:上邊將臨時文件目錄指定爲/var/temp/nginx,需要在/var下創建temp及nginx目錄

mkdir -p /var/temp/nginx

 

  1. 編譯安裝

make

make  install

 

安裝成功查看安裝目錄 :

    1. 啓動nginx

cd /usr/local/nginx/sbin/

./nginx

 

查詢nginx進程:

 

15098是nginx主進程的進程id,15099是nginx工作進程的進程id

 

注意:執行./nginx啓動nginx,這裏可以-c指定加載的nginx配置文件,如下:

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

如果不指定-c,nginx在啓動時默認加載conf/nginx.conf文件,此文件的地址也可以在編譯安裝nginx時指定./configure的參數(--conf-path= 指向配置文件(nginx.conf))

 

  1. 停止nginx

方式1,快速停止:

cd /usr/local/nginx/sbin

./nginx -s stop

此方式相當於先查出nginx進程id再使用kill命令強制殺掉進程。

 

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

cd /usr/local/nginx/sbin

./nginx -s quit

此方式停止步驟是待nginx進程處理任務完畢進行停止。

 

 

  1. 重啓nginx

方式1,先停止再啓動(建議使用):

對nginx進行重啓相當於先停止nginx再啓動nginx,即先執行停止命令再執行啓動命令。

如下:

./nginx -s quit

./nginx

 

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

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

./nginx -s reload

 

  1. 安裝測試

nginx安裝成功,啓動nginx,即可訪問虛擬機上的nginx:

 

  1. 什麼是反向代理

通常的代理服務器,只用於代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,並將本來要直接發送到Web服務器上的http請求發送到代理服務器中由代理服務器向Internet上的web服務器發起請求,最終達到客戶機上網的目的。

而反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。

 

 

  1. nginx+tomcat反向代理

    1. 需求

兩個tomcat服務通過nginx反向代理,本例子使用三臺虛擬機進行測試,

nginx服務器:192.168.101.3

tomcat1服務器:192.168.101.5

tomcat2服務器:192.168.101.6

如下圖:

 

 

 

 

 

啓動tomcat

tomcat使用apache-tomcat-7.0.57版本,在192.168.101.5和192.168.101.6虛擬機上啓動tomcat。

 

nginx反向代理配置

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

 

#配置一個代理即tomcat1服務器

upstream tomcat_server1 {

            server 192.168.101.5:8080;

        }

#配置一個代理即tomcat2服務器

    upstream tomcat_server2 {

            server 192.168.101.6:8080;

        }

 

#配置一個虛擬主機

    server {

        listen 80;

        server_name aaa.test.com;

        location / {

#域名aaa.test.com的請求全部轉發到tomcat_server1即tomcat1服務上

                proxy_pass http://tomcat_server1;

#歡迎頁面,按照從左到右的順序查找頁面

                index index.jsp index.html index.htm;

        }

 

    }

 

    server {

        listen 80;

        server_name bbb.test.com;

 

        location / {

 #域名bbb.test.com的請求全部轉發到tomcat_server2即tomcat2服務上

                  proxy_pass http://tomcat_server2;

                  index index.jsp index.html index.htm;

        }

    }

分別訪問aaa.test.com、bbb.test.com測試反向代理。

 

請求訪問aaa.test.com通過nginx代理訪問tomcat1,請求訪問bbb.test.com通過nginx代理訪問tomcat2。

 

 

  1. 負載均衡

    1. 什麼是負載均衡

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡,英文名稱爲Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

  1. nginx實現負載均衡

    1. 需求

nginx作爲負載均衡服務器,用戶請求先到達nginx,再由nginx根據負載配置將請求轉發至 tomcat服務器。

nginx負載均衡服務器:192.168.101.3

tomcat1服務器:192.168.101.5

tomcat2服務器:192.168.101.6

​​​​​​​配置

根據上邊的需求在nginx.conf文件中配置負載均衡,如下:

 

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;

        }

    }

 

​​​​​​​測試

請求aaa.test.com,通過nginx負載均衡,將請求轉發到tomcat服務器。

通過觀察tomcat的訪問日誌或tomcat訪問頁面即可知道當前請求由哪個tomcat服務器受理。

 

 

  1. nginx負載均衡高可用

    1. 什麼是負載均衡高可用

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

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

 

 

  1. keepalived+nginx實現主備

  2. 什麼是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),master會發組播,當backup收不到VRRP包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個模塊,分別是core、check和VRRP。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模塊是來實現VRRP協議的。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章