1、目的
利用tengine作为代理服务器,实现多个端口代理,例如:同一个功能模块在单个服务器有3个tomcat实例,可以通过tengine代理,统一使用80端口作为负载端口,并对外输出。
如下以www.anderschow.com配置为例,线上单台服务器有三个tomcat实例【端口为10001、11001、12001】为该域名提供服务。
2、软件版本
os: centos6.4
tengine: 2.1.1
pcre: 8.31
3、安装步骤
前提
如果没有【yum list 包名称看是否有安装】,请安装如下基础库
yum install -y gcc gcc-c++yum install openssl openssl-devel
1)安装pcre
tar zxvf pcre-8.31.tar.gzcd pcre-8.31./configure --prefix=/usr/local/pcremakemake install
2)安装tengine2.1.1
cd /usr/local/srcwget http://tengine.taobao.org/download/tengine-2.1.1.tar.gztar zxvf tengine-2.1.1.tar.gzcd tengine-2.1.1./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.31makemake install
3)设置启动项
vim /etc/rc.local#添加/usr/local/nginx/sbin/nginx
4)日志分割脚本及计划任务
tengine访问日志默认只有一个不可配置按天或按小时切割,所以需要另建任务,完成按小时切割的需求。
vim /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh
#文件中添加如下内容,并保存
log_dir="/data/tengine/2.1.1/logs/anderschow"date_dir=`date +%Y-%m-%d-%H`mv ${log_dir}/access.log ${log_dir}/access.log.${date_dir}kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
#添加计划任务及脚本
crontab -e#添加如下脚本0 */1 * * * /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh
说明:日志分割其他方法参考【】
4、配置信息
1)tengine主要配置信息
路径:/usr/local/nginx/conf/nginx.conf
内容:
worker_processes 10;worker_rlimit_nofile 65535;error_log /data/tengine/2.1.1/logs/error.log error;pid /usr/local/nginx/logs/nginx.pid;events { use epoll; worker_connections 65535;}http { include mime.types; default_type application/json; log_format accesslog '$remote_addr ' '$time_local ' '$request_method ' '$request_uri ' '$status ' '$body_bytes_sent ' '$http_referer ' '$request_time ' '$upstream_response_time ' '$host ' '$upstream_addr ' '$http_user_agent '; sendfile on; keepalive_timeout 30; include /usr/local/nginx/conf/upstreams/*.conf; include /usr/local/nginx/conf/servers/*.conf;}
2)server配置信息
路径:/usr/local/nginx/conf/servers/anderschow.conf
内容:
server { listen 80; server_name www.anderschow.com; access_log /data/tengine/2.1.1/logs/anderschow/access.log accesslog; location / { root html; index index.html index.htm; proxy_pass http://www.anderschow.com; } }
3)upstream 配置信息
路径:/usr/local/nginx/conf/upstreams/anderschow.conf
内容:
upstream www.anderschow.com { server 127.0.0.1:10001 weight=60; server 127.0.0.1:11001 weight=60; server 127.0.0.1:12001 weight=60; }
5、常用命令
1)验证tengine配置信息是否正常
/usr/local/nginx/sbin/nginx -t
2)重载tengine配置信息
/usr/local/nginx/sbin/nginx -s reload
3)启动tengine
/usr/local/nginx/sbin/nginx
4)平缓停止tengine
/usr/local/nginx/sbin/nginx -s quit
5)停止tengine
/usr/local/nginx/sbin/nginx -s stop
6、过程中发现的异常
1、如果因为server_name过多导致报错【友人提供,谢谢!】
解决办法:添加server_names_hash_bucket_size配置项。
2、upstream的name建议用域名,否则容易存在未知的错,如404,端口无法跳转。【友人提供,谢谢!】