一份简洁的Tengine/Nginx配置文档

资料列表

  1. Nginx 中文文档:http://www.nginx.cn/doc/
  2. Nginx WIKI:https://www.nginx.com/resources/wiki/

Tengine是由淘宝网发起的Web服务器项目。它在Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性

  1. Tengine 官网:http://tengine.taobao.org/

常用命令

常用目录:nginx默认配置文件目录
/etc/nginx/nginx.conf

/etc/nginx/conf.d/*

nginx -s reload # 重载配置
nginx -v        # 查看版本

Tengine docker

详情查看https://hub.docker.com/r/kimoqi/tengine

# 使用docker运行tengine
docker run -it -d --name tgx -p 80:80 -p 443:443 kimoqi/tengine
# 进入容器
docker exec -it tgx /bin/sh
# 修改配置
vi /etc/nginx/nginx.conf
# 重载配置
nginx -s reload 

当然也可以在容器外面指定配置文件,比如(我没试过,自行尝试)

docker run -it -d --name tgx -p 80:80 -p 443:443 -v ~/tengine/nginx.conf:/etc/nginx/nginx.conf kimoqi/tengine

Tengine负载均衡配置,版本Tengine/2.2.3 (nginx/1.8.1)

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
    use epoll;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    #access_log  logs/access.log  main;
    #access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;

    sendfile        on;

    keepalive_timeout  65;

    # 开启gzip压缩
    gzip on;
    gzip_min_length 2k;
    gzip_buffers    4 32k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_proxied any;

    upstream backserver {
        # ip_hash;        #ip绑定,条件:1.tengine/nginx作为前置服务器  2.非局域网  不满足以上条件ip_hash可能失效
        session_sticky;   #cookie绑定,条件:1.浏览器需开启cookie
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;

        # 心跳检测具体可见http://tengine.taobao.org/document_cn/http_upstream_check_cn.html
        
        # 心跳检测
        # check interval=3000 rise=2 fall=5 timeout=1000 type=http;
          # check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        # check_keepalive_requests 100;
        # check_http_expect_alive http_2xx http_3xx;

        
        # 心跳检测,开启长连接
        check interval=3000 rise=2 fall=5 timeout=1000 type=http; # 表示3s发一个检查包给后端服务器。超时10s,类型是http,失败5次认为服务器挂掉了,成功2次认为是成功的        
        # HEAD表示指定,可以用GET,这里遇到一个问题,每一次心跳检测都会生成一个session,session直接就爆炸了,可以专门设置一个健康检查的请求,这里叫(/helthCheck),禁用session,Spring里面这样禁用 request.getSession(false);
        # 有部分严格的长连接需Host字段,Tengine官方的没带有Host字段,长连接可能失效(check.com可随便写)参考:https://my.oschina.net/liuleidefeng/blog/786739
        check_http_send "HEAD /helthCheck HTTP/1.1\r\nConnection: keep-alive\r\nHost: check.com\r\n\r\n";    
        check_keepalive_requests 100; # 在一个TCP连接间发100次请求
        check_http_expect_alive http_2xx http_3xx; # 返回成功定义 2xx 3xx认为是成功的
        keepalive 32;
        keepalive_timeout 30s;
      }



    server {
        listen       80;
        server_name  www.domain.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;

        # 将resources路径下的静态文件请求全部重写到CDN(Java Spring开发的时候一般将静态文件放在resources里面)
        location ^~ /resources/ {
          rewrite /resources/(.*) http://your.cdn.domain.com/cdnresources/$1;
          expires 30d;  # 失效30天
        }

        location / {
            proxy_pass http://backserver/;
            proxy_set_header  Host  $host;            
            proxy_set_header X-Forwarded-For  $remote_addr; # 加上请求头,把客户真实的地址给后端服务器
            client_max_body_size 1000M;                     # 最大上传文件限制
        }

        # 心跳检测服务器运行状态显示
        location /status {
            check_status;
            access_log   off;
            allow SOME.IP.ADD.RESS; # 填写可以访问此页面的ip,比如1.1.1.1
            #deny all;
        }

        # 404跳转页面
        error_page  404              /404.html;
        
        # 50x跳转页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
Tags:none
上一篇
打赏
下一篇

添加新评论