Tengine
tengine是nginx的改装版,具有所有nginx的功能,并且另外添加了一部分功能,
nginx适用于高并发访问的负载均衡,不适用上传和下载任务较多的io服务
tengine官方中文文档:http://tengine.taobao.org/nginx_docs/cn/docs/
如果想体验nginx使用但是还没有安装nginx的伙伴,可以参考这个:https://blog.csdn.net/weixin_39445556/article/details/80808312
A-nginx的组成
-------------------------------------
分为master和worker两个角色
master负责管理worker
worker是实际负责处理任务的角色.
B-配置文件设置(打开自己环境的${NGINX_HOME}/conf/nginx.conf对比学习效果更好哦)
--------------------------------------
1-在${nginx_home}/conf/nginx.conf中通过设置worker_processes来设置一个服务器启动几个worker,一般情况设置同该机器内核数量相 同.如果不知道机器机器的数量,可以设置为auto自动匹配机器内核数.
worker_processes num | auto (位置在nginx.conf文件的开头部分)
worker_processes num | auto (位置在nginx.conf文件的开头部分)
注意,只有tengine才有auto选项,nginx只支持num
2-通过设置events中的worker_connections来限制每个worker的最大连接数,连接数应该大于服务器分配到每个worker上的最大连接数,缺省值是1024,一般不用改变.
events{
worker_connections 1024
}
位置在worker_processes的下面一点.
3-server配置部分包含在http配置里.server部分的listen选项设置的是监听的哪个端口,一个配置文件中可以有多个server配置,每个server配置可以监听同样或不同的端口,各个server可以通过server_name来区分.
一般的,server_name会设置成域名/ip等,目的是通过用户访问的url信息来确定哪个server来响应请求.通过这个办法可以使用一个服务器同时为多个域名提供服务,达到了虚拟主机的效果.配置如下
server {
listen 80;
server_name www.test2.com;
location / {
root /opt/test2;
}
}
server {
listen 80;
server_name www.test3.com;
location / {
root /opt/test3;
}
}
两个server都监听80端口,不过分别为项目Test1和Test2服务
4-location决定了响应请求对应的文件,配置位于server配置的内部.结构:location [ = | ~ | ~* | ^~ ] uri { ... }
= 精确到一个具体的文件
~ 正则匹配,区分大小写
~* 正则匹配,不区分大小写
^~ 不使用正则匹配
无符号,直接写uri,可以匹配指定的该目录下所有文件.
优先级 = > ^~ > ~ | ~* > 直接写uri
server {
listen 80;
server_name www.test2.com;
location / {
root /opt/test2;
index index.html index1.html;
}
}
上面的配置,可以通过www.test2.com/index.html访问index.html,也可以通过www.test2.com/index1.html访问Index1.html.当不输入具体文件时,访问按照名字字符排序靠前的文件.
server {
listen 80;
server_name www.test3.com;
location = / {
root /opt/test2;
}
location / {
root /opt/test3;
}
}
配置文件如上边例子一样时,访问的地址是location / {...},官网给出的答案不对.
5-ip访问权限控制,权限配置在location选项中.deny ip为拒绝的ip,allow ip为允许的ip
例如
location / {
allow 192.168.1.1;
deny 192.168.1.0/24;
allow 2001:0db8::/32;
deny all;
}
规则按照顺序依次检测,直到匹配到第一条规则。在192.168.1.x的网段中,只有192.168.1.1被允许访问了.在ipv6网段中,只有2001:0db8::/32被允许了.
server {
listen 80;
server_name www.test2.com;
location / {
deny all;
allow 192.168.1.102;
root /opt/test2;
index index.html index1.html;
}
}
当配置如上所示时,192.168.1.102没有访问权限.
6-权限验证访问控制.同样写在location配置中.需要添加两个选项.
auth_basic "closed site"; --身份验证时的提醒信息
auth_basic_user_file conf/htpasswd; --指定存放验证信息(用户名密码)的文件
存放用户名和密码的文件是自己提前使用加密工具生成的,可以是SHA加密,MD5加密,也可以用apache的htpasswd加密.
7-通过location配置的autoindex on选项可以设置目录共享,yum源共享.
location /mirror {
root /mnt;
autoindex on;
}
如上配置当其他用户访问http://ip/mirro的时候可以看到并下载/mnt/mirro下的所有文件.将yum的配置文件yum.repos.d文件的baseurl选项配置为http://ip/mirro,yum clean,yum makecatched可以将该目录作为yum源.
8-通过nginx服务器设置动静分离.动静分离指动态请求和静态请求的分离.
动静分离概念:http://baijiahao.baidu.com/s?id=1588586920645843819&wfr=spider&for=pc
动态请求都是以 .jsp/.action/.do结尾的请求,可以通过location选项实现.
location ~* \.(jsp|do|action)$ {
proxy_pass http://集群名 (或者具体某台机器的ip和端口)
}
当需要将请求传递到一个集群的时候,集群需要在upstream配置中配置好集群信息.upstring在server选项外.
upstream 集群名 {
server ip:端口;
server ip:端口;
}
集群名称需要跟location中proxy_pass调用的对应.proxy_pass作用是请求转发.
9-使用memcatched设置session共享.
a-安装mamcatched yum -y install memcatched
b-启动memcatched service memcatched start 监听11211端口
c-将memcatched 的jar包放到tomcat的lib里,jar在SXTZMB/tengine/memcatched_lib中和下载/服务器集群/memcatched_lib中,注意版本.
d-在tomcat/conf/context.xml中的<Context></Context>标签中配置memcatched的信息.粘贴如下内容即可.
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes=“n1:192.168.1.132:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
注意ip.每台tomcat服务器都要更改,两台主机的名称需要设置一样,就是n1这个名字要相同,
两台tomcat的服务器时间要同步.
10-nginx实现伪静态
通过nginx_http_rewrite_module来实现.可以使用正则替换url.
http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_rewrite_module.html