Nginx集群及代理的應用


目錄

1       大概思路... 1

2       了解Nginx及文檔資源... 1

3       Nginx命令模塊及進程結構... 2

4       解讀Nginx配置... 3

5       讓“百度”成為自己的“搬運工”. 5

6       服務器負載均衡集群... 7

7       域名解析實現負載均衡... 8

8       總結... 10

1       大概思路

l  了解Nginx及文檔資源

l  Nginx命令模塊及進程結構

l  解讀Nginx配置

l  讓“百度”成為自己的“搬運工”

l  服務器負載均衡集群

l  域名解析實現負載均衡

l  總結

 

2       了解Nginx及文檔資源

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

 

中文文檔官網:

http://www.nginx.cn/doc/

 

中文文檔官網上,擁有了一些示例:

安裝

nginx在windows上安裝

nginx在freebsd上安裝

nginx在ubuntu上安裝

nginx在fedora上安裝

nginx在centos上安裝

nginx php-fpm安裝配置

配置示例和方法

完整示例

完整示例(來自 Nginx 站點)

虛擬主機

負載均衡示例

防盜鏈

X-Sendfile (=> X-Accel-Redirect) in Nginx

Disable the errorlog entries caused by the HW-Loadbalancer

3       Nginx命令模塊及進程結構

基本命令

命令

描述

nginx –s stop

立即停止守護進程(使用TERM信號)

nginx –s quit

溫和地停止守護進程(使用QUIT信號)

nginx –s reopen

重新打開日志文件

nginx –s reload

重新載入配置文件

nginx -t

測試配置文件

kill/killall nginx

配置服務無法停止,可用該命令終止該進程

 

高級的配置,一般有5個文件

標准名稱

描述

nginx.conf

應用程序的基本配置文件

mime.types

一個文件擴展列表文件,與MIME類型關聯

fastcgi.conf

與FastCGI相關的配置文件

proxy.conf

與Proxy相關的配置文件

sites.conf

配置Nginx提供的網站,最好每個域建文件

 

基本模塊

名稱

描述

核心模塊(Core module)

基本特征和指令,例如進程管理和安全

事件模塊(Events module)

讓你在Nginx內部機制配置網絡使用能力

配置模塊(Configuration module)

提供包含機制

啟動Nginx,一個獨一無二的進程存在於內存——master進程,如果該服務在系統啟動時有init腳本啟動,它會使用當前的用戶和用戶組來運行——通常為root/root,master進程本身不處理任何客戶端的請求,它是用來產生進程——worker進程,這些worker進程在配置文件中指定的用戶和用戶組來運行,定義大量worker進程以及每個worker進程的最大連接數。

 

硬件選擇

低流量的配置

標准配置

高流量配置

CPU:雙核

RAM:2GB

請求:~1/s

CPU:四核

RAM:4GB

請求:~50/s

CPU:八核

RAM:12GB

請求:~1000/s

推薦值

 

 

worker_processes 2;

worker_rlimit_nofile 1024;

worker_priority -5;

worker_cpu_affinity 01 10;

events{

 multi_accept on;

 worker_connections 128;

}

worker_processes 4;

worker_rlimit_nofile 8192;

worker_priority 0;

worker_cpu_affinity 0001 0010 0100 1000;

events{

 multi_accept off;

 worker_connections 1024;

}

worker_processes 8;

worker_priority 0;

events{

 multi_accept off;

 worker_connections 8192;

}

 

4       解讀Nginx配置

核心模塊(Core module)指令

指令和使用環境

描述

master_process

語法:on或off

若為on,Nginx將開啟多個進程,一個主進程(即master進程)和worker進程;若為off,Nginx會以獨一無二的進程來運行。該指令僅被用於測試。

worker_processes

語法:數字

定義worker進程的數量,Nginx可將請求分到多個worker進程

error_log

語法:error_log /file/path level

能夠提供不同的錯誤日志級別:應用程序、HTPP服務、虛擬主機和虛擬主機目錄

pid

語法:文件路徑

用於存放Nginx守護進程的pid文件路徑。默認值為編譯時配置的路徑

事件模塊(Event Module)指令

指令和使用環境

描述

worker_connections

語法:數字

定義一個woker進程能夠同時連接的數量

multi_accept

語法:on或off

定義Nginx是否立刻從所有監聽隊列進入的連接

配置模塊(Configuration module)指令(涉及的主要是HTTP核心模塊,下面再補充)

Nginx.conf解讀:

#user  nobody;
#定義worker進程的數量,Nginx可將請求分到多個worker進程
worker_processes  1;

#能夠提供不同的錯誤日志級別:應用程序、HTPP服務、虛擬主機和虛擬主機目錄
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#用於存放Nginx守護進程的pid文件路徑。默認值為編譯時配置的路徑
#pid        logs/nginx.pid;

#定義一個woker進程能夠同時連接的數量
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Nginx以上面配置為基礎,提供Web服務

l  通過80監聽tcp套接字

l  訪問地址http://localhost/

l  主頁為index.html

在windows的cmd下,進入nginx目錄,輸入:

D:\DTLDownLoads\nginx-1.10.2>start nginx

D:\DTLDownLoads\nginx-1.10.2>nginx -t
nginx: the configuration file D:\DTLDownLoads\nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file D:\DTLDownLoads\nginx-1.10.2/conf/nginx.conf test is successful

D:\DTLDownLoads\nginx-1.10.2>

運行效果如下:

 

5       讓“百度”成為自己的“搬運工”

如何使用Nginx代理,使“百度”成為搬運工,主要設置server_name和proxy_pass屬性。這里涉及了配置模塊,主要是HTTP核心模塊。

HTTP核心模塊包含HTTP服務器所有基本的區段(block)、指令和變量。主要有http,server和location這三個主要的區段結構。

l  http 該區段嵌入配置文件的根部。

l  server 這個區段允許你聲明一個站點,能夠設定網站(通過主機名)。這樣通過Nginx實現公認的服務器。該區段只能用在http區段。

l  location 定義一組設置,應用於網站的一個特定位置。該區段能夠用於server區段,也能嵌套在其它location中。

指令和使用環境

描述

server_name

語法:server_name hostname1[hostname2…]

在server區段定義一個或者多個主機名

sendfile

語法:on或off

Nginx將使用sendfile內核來調用處理文件傳遞。

root

語法:目錄路徑

定義文檔根目錄

keepalive_timeout

語法:keepalive_timeout time1[time2...]

keep-alive能夠使用客戶端服務器的連接在一定時間內持續有效

 

Nginx.conf配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost zhyongfeng;
        location / {
            proxy_pass   https://www.baidu.com;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

運行效果:

 

 

6       服務器負載均衡集群

不同主機端口,通過localhost:80端口進行負載均衡集群訪問,使用localhost對WEB API配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream zhyongfeng.com {
    #可進行down測試;
        server    10.92.202.56:5600; 
        server    10.92.202.57:5700; 
        server    10.92.202.58:5800;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass   http://zhyongfeng.com;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

運行CMD:

D:\DTLDownLoads\nginx-1.10.2>start nginx

D:\DTLDownLoads\nginx-1.10.2>nginx -s reload

訪問:http://localhost/,運行結果:

 

 

7       域名解析實現負載均衡

不同主機端口,通過自主義域名zhyongfeng.com:80端口進行負載均衡集群訪問,則訪問C:\Windows\System32\drivers\etc\hosts,添加下列“本機IP 自定義的域名”:

10.93.85.66    zhyongfeng.com

使用zhyongfeng.com對WEB API配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream zhyongfeng.com {
        server    10.92.202.56:5600;
        server    10.92.202.57:5700; 
        server    10.92.202.58:5800;
    }
    server {
        listen       80;
        server_name  zhyongfeng.com;
        location / {
            proxy_pass   http://zhyongfeng.com;
        } 
    }
}

運行CMD,重新reload加載配置,停止后重新啟動:

D:\DTLDownLoads\nginx-1.10.2>nginx -s reload

D:\DTLDownLoads\nginx-1.10.2>nginx -s stop

D:\DTLDownLoads\nginx-1.10.2>start nginx

訪問:http://zhyongfeng.com/,http://localhost/,http://10.93.85.66/的運行結果:

8       總結

Nginx可以使用Rewrite模塊建立高級重寫規則,可以和PHP、Python結合,也可以替換Apache,或者作用於現有HTTP服務器前端,能夠輕松建立虛擬主機配置,既能反向代理又可以是電子郵件(IMAP/POP3)代理服務器,功能強大,可以深入學習。

 

Windows的Nginx資源下載:

http://download.csdn.net/download/ruby_matlab/10117702

 

PDF下載:

Nginx集群及代理的應用.pdf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM