操做系統: Linuxjavascript
服務器: tomcat7css
nginx版本:1.6.0html
nginx是一個高性能的http和反向代理服務器,因其穩定性、豐富的功能性、以及低能耗被普遍採用。本文將示範在fedora16上配置安裝nginx,而且整合tomcat作服務器負載均衡配置。java
Nginx 安裝node
從官網下載Nginx包 http://nginx.org/en/download.htmllinux
在終端su進入root用戶(必須以root權限安裝,由於安裝路徑爲/usr/local,普通權限沒法對該位置的文件進行寫操做)。nginx
1.tar -zxvf nginx-1.6.0.tar.gzapache
2.cd nginx-1.6.0瀏覽器
3../configure--with-http_stub_status_module --with-http_ssl_module--prefix=/usr/local/nginx
這行命令執行後,可能會提示 ./configure: error: the HTTP rewritemodule requires the PCRE library.這個錯誤,是缺乏pcre 包,可用yum install pcrepcre-devlel來解決緩存
4.make && make install
安裝成功的話,安裝目錄爲 /usr/local/nginx
測試是否安裝成功,在終端中執行usr/local/nginx/sbin/nginx, 而後在瀏覽器中輸入localhost,若出現 welcome to nginx 則表示安裝成功。
若要關閉Nginx,則在終端中 ps aux | grep nginx ,而後kill 掉相關進程便可。或者輸入 usr/local/nginx/sbin/nginx -s stop來中止,該命令 -s 表示將signal 發送到nginx主進程中。
Nginx配置
Nginx 的配置主要是修改 /usr/local/nginx/conf/nginx,conf文件
#配置用戶和用戶組
user www www;
#工做進程數,建議設置爲CPU的總核數
worker_processes 2;
#全局錯誤日誌定義類型,日誌等級從低到高依次爲: debug | info | notice | warn | error | crit
error_log logs/error.log info;
#記錄主進程ID的文件
pid /usr/local/nginx/nginx.pid;
#一個進程能打開的文件描述符最大值,理論上該值因該是最多能打開的文件數除以進程數。可是因爲nginx負載並非徹底均衡的,
#因此這個值最好等於最多能打開的文件數。執行 sysctl -a | grep fs.file 能夠看到linux文件描述符。
worker_rlimit_nofile 65535;
#工做模式與鏈接數上限
events {
#工做模式,linux2.6版本以上用epoll
use epoll;
#單個進程容許的最大鏈接數
worker_connections 65535;
}
#設定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 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其餘的訪問信息
access_log logs/access.log main;
#服務器名字的hash表大小
server_names_hash_bucket_size 128;
#客戶端請求頭緩衝大小。nginx默認會用client_header_buffer_size這個buffer來讀取header值,
#若是header過大,它會使用large_client_header_buffers來讀取。
#若是設置太小HTTP頭/Cookie過大 會報400 錯誤 nginx 400 bad request
#若是超過buffer,就會報HTTP 414錯誤(URI Too Long)
#nginx接受最長的HTTP頭部大小必須比其中一個buffer大,不然就會報400的HTTP錯誤(Bad Request)。
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
#客戶端請求體的大小
client_body_buffer_size 8m;
#隱藏ngnix版本號
server_tokens off;
#忽略不合法的請求頭
ignore_invalid_headers on;
#指定啓用除第一條error_page指令之外其餘的error_page。
recursive_error_pages on;
#讓 nginx 在處理本身內部重定向時不默認使用 server_name 設置中的第一個域名
server_name_in_redirect off;
#開啓文件傳輸,通常應用都應設置爲on;如果有下載的應用,則能夠設置成off來平衡網絡I/O和磁盤的I/O來下降系統負載
sendfile on;
#告訴nginx在一個數據包裏發送全部頭文件,而不一個接一個的發送。
tcp_nopush on;
#告訴nginx不要緩存數據,而是一段一段的發送--當須要及時發送數據時,就應該給應用設置這個屬性,
#這樣發送一小塊數據信息時就不能當即獲得返回值。
tcp_nodelay on;
#長鏈接超時時間,單位是秒
keepalive_timeout 65;
#gzip模塊設置,使用 gzip 壓縮能夠下降網站帶寬消耗,同時提高訪問速度。
gzip on; #開啓gzip
gzip_min_length 1k; #最小壓縮大小
gzip_buffers 4 16k; #壓縮緩衝區
gzip_http_version 1.0; #壓縮版本
gzip_comp_level 2; #壓縮等級
gzip_types text/plain application/x-javascript text/css application/xml; #壓縮類型
#upstream做負載均衡,在此配置須要輪詢的服務器地址和端口號,max_fails爲容許請求失敗的次數,默認爲1.
#weight爲輪詢權重,根據不一樣的權重分配能夠用來平衡服務器的訪問率。
upstream hostname {
server 192.168.2.149:8080 max_fails=0 weight=1;
server 192.168.1.9:8080 max_fails=0 weight=1;
}
#主機配置
server {
#監聽端口
listen 80;
#域名
server_name hostname;
#字符集
charset utf-8;
#單獨的access_log文件
access_log logs/192.168.2.149.access.log main;
#反向代理配置,將全部請求爲http://hostname的請求所有轉發到upstream中定義的目標服務器中。
location / {
#此處配置的域名必須與upstream的域名一致,才能轉發。
proxy_pass http://hostname;
proxy_set_header X-Real-IP $remote_addr;
}
#啓用nginx status 監聽頁面
location /nginxstatus {
stub_status on;
access_log on;
}
#錯誤頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
至此,nginx基本的負載均衡配置完成,實驗中部署2臺tomcat, 而後訪問時返回不一樣的結果,在瀏覽器中輸入地址,確實能看到不一樣的返回結果。nginx配置文件的內容還有待於繼續學習。
四、Tomcat配置
對於tomcat你們都很熟悉,只須要修改server.xml配置文件便可,這裏咱們以apache-tomcat-6.0.14爲例,分別在server目錄,解壓縮並命名爲:apache-tomcat-6.0.14_一、apache-tomcat-6.0.14_2。
第一處端口修改:
<!-- 修改port端口:18006 倆個tomcat不能重複,端口隨意,別過小-->
<Server port="18006" shutdown="SHUTDOWN">
第二處端口修改:
<!-- port="18081" tomcat監聽端口,隨意設置,別過小 -->
<Connector port="18081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
第三處端口修改:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Engine元素增長jvmRoute屬性:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
兩個tomcat的端口別重複,保證能啓動起來,另外一個tomcat配置希捷省略,監聽端口爲18080,附件中咱們將上傳全部的配置信息。