虚拟主机配置:
在现实中,公司为了充分利用服务器资源 , 一台 Nginx 服务器会同时挂多个站点,这些站点可以基于80端口配置 N 多不同域名的服务器,那么,怎样实现这一功能呢,接下来就让我们学习一下,虚拟主机的配置
首先,分别创建两个不同网站的目录:
mkdir -p /data/html/{a,b}
修改 Nginx 配置文件中的 server 段
server{
listen 80;
server_name www.a.com;
location / {
root /data/html/a;
index index.html index.htm
}
}
server{
listen 80;
server_name www.b.com;
location / {
root /data/html/b;
index index.html index.htm
}
}
通过修改客户端 HOSTS 指向两个域名,在浏览器中用域名访问测试效果
负载均衡配置:
Nginx 通过配置 upstream 参数达到均衡后端多个实例
Nginx 的upstream 目前支持 5 种算法分配方式:
1> 轮询(默认 rr )
每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台面服务器
down掉,自动剔除,待恢复自动添加上。
2>Weight 权重
指定轮询权重,权重越高,处理的请求越多,weight 和访问比率成正比,用于
后端服务器性能不均的情况下
3>ip_hash
每个请求根据访问的IP 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题,一般用于登陆会话。
4>fair (第三方)
按后端服务器的响应时间来分配请求,响应时间越短的优先分配。
5>url_hash (第三方)
upstream 的 fail_timeout 和 max_fails 参数是用来判断负载均衡 upstream 中的某个 server 是否失效。
在nginx.conf 里简单的配置一个 app_web 均衡
upstream app_web {
server 10.10.1.11:8080 weight=1 max_fails=2fail_timeout=30s;
server 10.10.1.12:8080 weight=1 max_fails=2fail_timeout=30s;
}
***注:均衡两台后端JAVA服务,在30秒内nginx会与后端的某个server通信检测,如果检测连接失败2次,则Nginx会认为该server已经失效,然后踢出转发列表,然后在接下来的30s内,nginx不再讲请求转发给失效的server
更多参数:
fail_timeout指定在多长时间内失败max_fails 次,将视为该 server 失效,踢出转发列表
proxy_connect_timeout和proxy_read_timeout来控制响应时间
proxy_read_timeout:连接成功后_等候后端服务器响应时间,其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout :后端服务器数据回传时间,在规定时间之内后端服务器必须传完所有的数据。
keepalive_timout:一个http产生的tcp连接在传送完最后一个响应后,还需要等待多少秒后,才关闭这个连接