ProMonkey Lab

Linux下Web服务器Nginx/Tengine负载均衡

2018-06-27  本文已影响0人  ProMonkey_LAIN

介绍

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

需求描述

由于目前项目组多个项目,登录方式必须携带域名;故通过tengine配置upstream模块,实现负载均衡(由于目前业务都是单点,所以只是反向代理效果),选择四层交换上落VIP,大致拓扑如下


拓扑图

环境安装

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
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;   #允许客户端请求的最大的单个文件字节数

    sendfile    on;
    tcp_nopush    on;
    tcp_nodelay    on;

    keepalive_timeout  65;
    
    include gzip.conf;      #HttpGzip的配置文件
    include proxy.conf;     #配置代理文件
    include vhost/*.conf;     #虚拟主机的配置文件
    include myupstream.conf;       #配置后端的服务器列表文件
}
vim /usr/local/nginx/conf/gzip.conf
gzip on;
gzip_min_length 1k;     #设置允许压缩的页面最小字节数。
gzip_buffers 4 16k;     #用来存储gzip的压缩结果
gzip_http_version 1.1;  #识别HTTP协议版本
gzip_comp_level 2;      #设置gzip的压缩比 1-9 1压缩比最小但最快 9相反
gzip_types text/plain application/x-javascript text/css application/xml;        #指定压缩类型
gzip_proxied any;       #无论后端服务器的headers头返回什么信息,都无条件启用压缩
gzip_vary on;
gzip_disable "MSIE [1-6].";     #禁用IE6的gzip压缩
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;
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;
}
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";
    }
}
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
#重启服务
systemctl restart nginx.service
上一篇下一篇

猜你喜欢

热点阅读