下载:https://nginx.org/en/download.html
应用场景分别为:虚拟多个主机 、反向代理、负载均衡
1.启动
windows下解压后进入nginx目录下,在地址栏输入cmd,dos直接进入此目录。
启动命令:start nginx。检查启动情况:tasklist /fi "imagename eq nginx.exe"。可以直接访问一下。如果失败,大多是端口的问题。进入nginx目录的conf下修改nginx.conf文件即可。
命令检查配置文件:nginx -t -c /nginx-1.20.1/conf/nginx.conf。目录对照修改。
快速停止 nginx -s stop
完整有序的关闭 nginx -s quit
windows下关闭线程:taskkill /f /pid 14168
启动成功页面:
2.配置tomcat
tomcat修改server.xml文件端口号。并进行启动检查。
启动成功后,新建index.html页面放到每个tocmat的webapps的ROOT下,页面中要有区别tomcat的标识。
我这需要修改tomcat的地方:
ajp连接现在不用,注释掉,或者修改端口号。
修改nginx的配置文件,找到server如下添加upstream mysvr,修改location。参考如下
upstream mysvr{
server localhost:8010;
server localhost:8020;
server localhost:8030;
}
server {
listen 8800;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://mysvr;
root html;
index index.html index.htm;
}
启动每个tomcat后,启动或重启 nginx。
重启nginx -s reload
访问http://localhost:8800/,现在轮流访问每个tocmat。
3.upstream
1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream mysvr {
server localhost:8010;
server localhost:8020;
server localhost:8030;
}
2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream mysvr {
server localhost:8010 weight=10;
server localhost:8020 weight=20;
server localhost:8030 weight=30;
}
3、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream mysvr {
ip_hash;
server localhost:8010;
server localhost:8020;
server localhost:8030;
}
4、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx 本身是不支持fair的,如果需要使用这种调度算法,必须下载 Nginx 的 upstream_fair 模块。
upstream mysvr {
server localhost:8010;
server localhost:8020;
server localhost:8030;
fair;
}
5、url_hash(第三方)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持 url_hash 的,如果需要使用这种调度算法,必须安装 Nginx 的 hash 软件包。
upstream mysvr {
server localhost:8010;
server localhost:8020;
server localhost:8030;
hash $request_uri;
hash_methos crc32;
}
3.1upstream的参数
upstream mysvr {
ip_hash;
server localhost:8010 down;
server localhost:8020 weight=2;
server localhost:8030;
server localhost:8040 backup;
}
down 表示单前的 server 暂时不参与负载
weight 默认为1,weight 越大,负载的权重就越大。
max_fails 允许请求失败的次数默认为1,当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
fail_timeout max_fails 次失败后,暂停的时间。
backup 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻。
client_body_in_file_only 设置为 On 可以将 client post 过来的数据记录到文件中用来做 debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录。
location 对URL进行匹配,可以进行重定向或者进行新的代理负载均衡。