ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

10.CentOS7安装Tenginx

2021-09-21 23:06:27  阅读:237  来源: 互联网

标签:10 http log index Tenginx server CentOS7 nginx html


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

优点

  • 资源占用少
  • 支持高并发
  • 反向代理,负载均衡,缓存服务
  • 支持异步网络i/o时间模型epoll

1.安装

1.下载最新的[Tenginx][http://tengine.taobao.org/download.html]

2.安装之前检查CentOS7的依赖

#对nginx源码进行编译依赖gcc环境
yum install gcc-c++

#CRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库.nginx 的 http模块使用pcre来解析正则表达式,pcre-devel 是使用 pcre 开发的一个二次开发库
yum install -y pcre pcre-devel

# nginx使用zlib对http包的内容进行 gzip
yum install -y zlib zlib-devel

#OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.nginx 不仅支持 http 协议,还支持https(即在ssl协议上传输http)
yum install openssl openssl-devel

2.安装Tenginx

#解压Tenginx
tar -zxvf tengine-2.3.3.tar.gz
#检查是否安装了

cd tengine-2.3.3
#指定安装路径
./configure --prefix=/opt/nginx233
#编译并安装
make && make install 

2.配置文件详解

  • conf 存放nginx所有配置文件的目录,主要nginx.conf
  • html 存放nginx默认站点的目录,如index.html、error.html等
  • logs 存放nginx默认日志的目录,如error.log access.log
  • sbin 存放nginx主命令的目录,sbin/nginx

nginx.conf

#user  nobody;
#定义了nginx的工作进程数,以Cpu核数为准
worker_processes  auto;

#Nginx错误日志存放路径
error_log  logs/error.log;
#Nginx服务运行后产生的pid进程号
pid        logs/nginx.pid;


events {
    #每个worker进程支持的最大连接数
    worker_connections  1024;
}


http {
    #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
    include       mime.types;
    default_type  application/octet-stream;
    
    # 打开此nginx的访问日志功能,即可查看日志
    #日志格式设定
    #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
    #$remote_user:用来记录客户端用户名称;
    #$time_local: 用来记录访问时间与时区;
    #$request: 用来记录请求的url与http协议;
    #$status: 用来记录请求状态;成功是200,
    #$body_bytes_sent :记录发送给客户端文件主体内容大小;
    #$http_referer:用来记录从那个页面链接访问过来的;
    #$http_user_agent:记录客户浏览器的相关信息;
    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/acess.log main;
    
    sendfile        on;
    keepalive_timeout  65;
    # nginx开启静态资源压缩,比如nginx返回磁盘的html文件特别大,里面包含了诸多的静态文件,极大提升网站访问
    gzip  on;
    #提供静态资源缓存功能,第一次访问过网页后,nginx能让静态资源缓存到浏览器上
    #虚拟主机代码块
    server {
        #网站端口
        listen       80;
        #网站域名
        server_name  localhost;
        #网站编码
        charset utf-8;
        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
        #域名匹配模块
        location / {
            root   /crm/;
            index  index.html index.htm;
        }
        #添加404页面优化,且是相对于location中的/crm/路径
        error_page 404 /404.html
        #添加505页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
    server {
    listen  85;
    server_name  localhost
    charset utf-8;
    location / {
            root   /crm85/;
            index  index.html index.htm;
        }

    }



    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

3.反方向代理

名称含义作用
正向代理为局域网客户端向外访问Internet服务1.使用缓冲特性减少网络使用率
2.必须采取安全措施确保内网客户端通过它访问外部网站
反向代理为局域网服务器向外提供Internet服务1.可以使用负载平衡提高客户访问量,还可以基于高级URL策略和管理技术对服务进行高质量管控
2.对外提供服务是透明的,客户端并不知道自己访问的是一个代理
#user  nobody;
#定义了nginx的工作进程数,以Cpu核数为准
worker_processes  auto;

#Nginx错误日志存放路径
error_log  logs/error.log;
#Nginx服务运行后产生的pid进程号
pid        logs/nginx.pid;


events {
    #每个worker进程支持的最大连接数
    worker_connections  1024;
}


http {
    #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
    include       mime.types;
    default_type  application/octet-stream;

    # 打开此nginx的访问日志功能,即可查看日志
    #日志格式设定
    #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
    #$remote_user:用来记录客户端用户名称;
    #$time_local: 用来记录访问时间与时区;
    #$request: 用来记录请求的url与http协议;
    #$status: 用来记录请求状态;成功是200,
    #$body_bytes_sent :记录发送给客户端文件主体内容大小;
    #$http_referer:用来记录从那个页面链接访问过来的;
    #$http_user_agent:记录客户浏览器的相关信息;
    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/acess.log main;
    
    sendfile        on;
    keepalive_timeout  65;
    # nginx开启静态资源压缩,比如nginx返回磁盘的html文件特别大,里面包含了诸多的静态文件,极大提升网站访问
    gzip  on;
    #提供静态资源缓存功能,第一次访问过网页后,nginx能让静态资源缓存到浏览器上
    #虚拟主机代码块
    server {
        #网站端口
        listen       80;
        #网站域名
        server_name  localhost;
        #网站编码
        charset utf-8;
        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
        #域名匹配模块
        location / {
            root   /crm/;
            #将80端口的访问转发给85端口
            proxy_pass  http://192.168.211.133:85;
            index  index.html index.htm;
        }
        #添加404页面优化,且是相对于location中的/crm/路径
        error_page 404 /404.html
        #添加505页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
    server {
    listen  85;
    server_name  localhost
    charset utf-8;
    location / {
            root   /crm85/;
            index  index.html index.htm;
        }

    }



    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

4.负载均衡

含义特点
将大量并发请求分别按照不同的策略转发给upstream虚拟服务池中多台服务器的过程当一台服务器宕机之后,仍能保持系统可用

1.upstream配置

http{
upstream django {
       server 10.0.0.10:8000;
       server 10.0.0.11:9000;
}
server{
    location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://django;
	}
}
}

2.upstream分配策略

算法含义
轮询(不做配置,默认轮询)按时间顺序逐一分配到不同的后端服务器
weight加权轮询,weight值越大,分配到的访问几率越高
ip_hash每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn最少链接数,那个机器链接数少就分发

weight权重(优先级)

upstream django {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的
}

ip_hash配置,根据客户端ip哈希分配(这样每个访客固定访问一个后端服务器,不能和weight一起用weight 权重)

upstream django {
    ip_hash;
       server 10.0.0.10:8000;
       server 10.0.0.11:9000;
}

backup(在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小)

upstream django {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000;
       server node.oldboy.com:8080 backup;
}

标签:10,http,log,index,Tenginx,server,CentOS7,nginx,html
来源: https://blog.csdn.net/weixin_44689630/article/details/120406684

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有