本文分兩篇,一篇nginx配置,一篇haproxy配置,此文爲nginx的配置
實驗環境:
HAProxy IP:10.2.18.219 Centos6.4-64bit Web1 IP:10.2.16.254 Centos6.4-64bit Web2 IP:10.2.16.253 Centos6.4-64bit
vlan互通,兩臺web事先做好nginx,兩臺web配置一模一樣
有關nginx介紹不再多說,下面直接講安裝配置
本例用nginx-1.6.0版本
首先安裝依賴
yum -y install pcre* (本機所需依賴僅爲pcre,可根據編譯提示自行選擇安裝依賴)
解壓安裝nginx:
tar -zxvf nginx-1.6.0.tar.gz -C ./
mkdir /usr/local/nginx #創建nginx根目錄
cd nginx-1.6.0
./configure --prefix=/usr/local/nginx
make && make install
安裝完成後,修改配置文件
Nginx配置文件主要分成四部分:main(全局設置)、server(主機設置)、upstream(負載均衡服務器設置)和 location(URL匹配特定位置的設置)。main部分設置的指令將影響其他所有設置;server部分的指令主要用於指定主機和端口;upstream指令主要用於負載均衡,設置一系列的後端服務器;location部分用於匹配網頁位置。這四者之間的關係式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。
vim nginx.conf #以下爲本例中的nginx配置,比較簡單:
user nobody; #指定Nginx Worker進程運行用戶以及用戶組,默認由nobody賬號運行。
worker_processes 5; #指定了Nginx要開啓的進程數。每個Nginx進程平均耗費10M~12M內存。根據經驗,一般指定一個進程足夠了,如果是多核CPU,建議指定和CPU的數量一樣的進程數即可。
error_log logs/error.log notice; #用來定義全局錯誤日誌文件。日誌輸出級別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日誌最爲最詳細,而crit輸出日誌最少。
pid logs/nginx.pid; #指定pid文件位置
events { #events指令是設定Nginx的工作模式及連接數上限。
use epoll; #指定Nginx的工作模式爲epoll。 Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選。
worker_connections 1024; #用於定義Nginx每個進程的最大連接數,默認爲1024
}
#最大客戶端連接數由上面定義的worker_processes和此worker_connections決定,即最大連接數=worker_processes*worker_connections,在作爲反向代理時,最大連接數 = worker_processes * worker_connections/4
進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令“ulimit -n 65536”後worker_connections的設置才能生效。
http { #HTTP服務器設置
include mime.types;
default_type application/octet-stream; #日誌格式的設定
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; #指定訪問日誌的路徑
sendfile on; #開啓高效文件傳輸模式
keepalive_timeout 60; #客戶端連接保持活動的超時時間。在超過這個時間之後,服務器會關閉該連接。
gzip on; #開啓GZIP壓縮,實時壓縮輸出數據流
gzip_min_length 1100; #允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,不管頁面多大都進行壓縮。建議設置成大於1K的字節數,小於1K可能會越壓越大。
gzip_buffers 4 8k; #申請4個單位爲8K的內存作爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。
gzip_types text/plain; #指定壓縮的類型,無論是否指定,“text/html”類型總是會被壓縮的。
output_buffers 1 32k;
postpone_output 1460;
server { #虛擬主機配置
listen 80; #指定虛擬主機的服務端口
server_name 10.2.16.254 www.czy.com; #指定IP地址或者域名,多個域名之間用空格分開
charset utf8; #指定網頁默認編碼格式
access_log logs/czy.access.log main; #指定虛擬主機的日誌文件
location / { #URL匹配配置(URL地址匹配是進行Nginx配置中最靈活的部分,location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。
root html; #指定網頁文件存放文件夾
index index.html index.htm; #首頁文件
}
error_page 500 502 503 504 /50x.html; #設置了虛擬主機的錯誤信息返回頁面
location = /50x.html { #error_page指令可以定製各種錯誤信息的返回頁面。特別需要注意的是,這些錯誤信息的返回頁面大小一定要超過512K
root html; #指定網頁文件存放文件夾
}
}
}
:wq
保存退出,nginx配置文件至此完成!
啓動nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
啓動成功後,同樣的操作在另一臺web2服務器上,兩臺nginx都配置完成後,再配置HA-proxy。