介紹
Tengine是由淘寶網(wǎng)發(fā)起的Web服務(wù)器項目。它在Nginx的基礎(chǔ)上,針對大訪問量網(wǎng)站的需求寇甸,添加了很多高級功能和特性。Tengine的性能和穩(wěn)定性已經(jīng)在大型的網(wǎng)站如淘寶網(wǎng)疗涉,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效吟秩、穩(wěn)定咱扣、安全、易用的Web平臺涵防。
需求描述
由于目前項目組多個項目闹伪,登錄方式必須攜帶域名;故通過tengine配置upstream模塊壮池,實現(xiàn)負載均衡(由于目前業(yè)務(wù)都是單點偏瓤,所以只是反向代理效果),選擇四層交換上落VIP椰憋,大致拓撲如下
環(huán)境安裝
- yum安裝依賴
yum install openssl openssl-devel pcre -y
- 編譯安裝
tar zxvf tengine-2.1.2.tar.gz
cd tengine-2.1.2
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre
make -j `grep processor /proc/cpuinfo | wc -l` && make install
-
nginx.conf
文件配置
vim /usr/local/nginx/conf/nginx.conf
user nobody nobody;
worker_processes auto;
worker_rlimit_nofile 65535;
pid logs/nginx.pid;
events {
worker_connections 65535;
use epoll;
}
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;
charset uft-8;
server_names_hash_bucket_size 256;
client_header_buffer_size 32k;
large_client_header_buffers 4 128k; #最大緩存為4個128KB
client_max_body_size 20m; #允許客戶端請求的最大的單個文件字節(jié)數(shù)
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include gzip.conf; #HttpGzip的配置文件
include proxy.conf; #配置代理文件
include vhost/*.conf; #虛擬主機的配置文件
include myupstream.conf; #配置后端的服務(wù)器列表文件
}
- Httpgzip配置文件
vim /usr/local/nginx/conf/gzip.conf
gzip on;
gzip_min_length 1k; #設(shè)置允許壓縮的頁面最小字節(jié)數(shù)厅克。
gzip_buffers 4 16k; #用來存儲gzip的壓縮結(jié)果
gzip_http_version 1.1; #識別HTTP協(xié)議版本
gzip_comp_level 2; #設(shè)置gzip的壓縮比 1-9 1壓縮比最小但最快 9相反
gzip_types text/plain application/x-javascript text/css application/xml; #指定壓縮類型
gzip_proxied any; #無論后端服務(wù)器的headers頭返回什么信息,都無條件啟用壓縮
gzip_vary on;
gzip_disable "MSIE [1-6]."; #禁用IE6的gzip壓縮
- Proxy代理配置文件
vim /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 512k;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_send_timeout 30;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
- Upstream配置文件
vim /usr/local/nginx/conf/myupstream.conf
upstream ui_web {
ip_hash;
server 192.168.0.252:80 max_fails=1 fail_timeout=60s;
}
upstream ui_android {
ip_hash;
server 192.168.0.251:80 max_fails=1 fail_timeout=60s;
server 192.168.0.250:80 max_fails=1 fail_timeout=60s;
}
- Vhost下虛擬主機配置文件
vim /usr/local/nginx/conf/vhost/*.conf
server {
listen 80;
server_name 192.168.0.253;
index index.jsp index.htm index.html;
location /web {
proxy_pass http://ui_web;
proxy_pass_header Set-Cookie;
}
location /android {
proxy_pass http://ui_android;
proxy_pass_header Set-Cookie;
}
location /NginxStatus {
stub_status on;
access_log off;
auth_basic "NginxStatus";
}
}
- 系統(tǒng)啟動腳本配置
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#添加開機啟動
systemctl enable nginx.service
#重啟服務(wù)
systemctl restart nginx.service
- 多臺服務(wù)器橙依,配置如上相同即可