努力学习,超越自我。html
nginx是一个高性能http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。特色是内存占用少,并发能力强。nginx
1、搭建环境web
nginx安装:https://my.oschina.net/wangzonghui/blog/1620790apache
nginx历史版本地址:后端
tomcat直接下载配置,解压便可。tomcat
https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.84/bin/apache-tomcat-7.0.84.tar.gz服务器
复制两份tomcat,同一机器启动两个tomcat,修改其中一个请求端口为8088和./webapp/ROOT/index.html文件,修改方式以下:网络
2、负载均衡配置session
nginx有多种负载均衡模式:
一、轮询(默认)
每一个请求按时间顺序逐一分配到不一样的后端服务器,若是后端服务器down掉,能自动剔除。
二、weight
指定轮询概率,weight和访问比率成正比,用于后端服务器性能不均的状况。
二、ip_hash
每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,能够解决session的问题。
三、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
四、url_hash(第三方)
按访问url的hash结果来分配请求,使每一个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
这里走默认,修改nginx配置,路径/usr/local/nginx/conf/nginx.conf
http中添加以下配置:
验证脚本是否修改有误,/user/local/nginx/sbin/nginx -t,
启动 /user/local/nginx/sbin/nginx -s reload
如此,请求主机名或ip,重复刷新,能够看到两个tomcat切换。
3、线上配置实例
一个项目部署了两个服务器,nginx每次接收请求后,轮询(可选择轮询、最少链接、ip地址哈希、权重复制均衡)转发不一样地址的tomcat。
在http下增长upstream节点,choseapp是自定义的,根据须要指定。
upstream choseapp {
server localhost:8080;
server localhost:8081;
}
修改以前的location,将本来的ip和端口,换成choseap:
location /dw {
proxy_pass http://choseapp/dw;
}
三、单个ip并发限制
首先http下增长以下内容:
imit_conn_zone $binary_remote_addr zone=one:10m;
$binary_remote_addr是nginx内部参数,zone定义配置名称为one,10M请求缓存大小
须要限制的location中增长:
limit_conn one 1; #这将指定一个地址只能同时存在一个链接。“one”与上面的对应,也能够自定义命名
limit_rate 300k; #单个请求的网络带宽最大值
须要深度学习限制配置参照:http://www.javashuo.com/article/p-soasoqmd-ko.html
完整配置以下:
worker_processes 1; #启动进程数 #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #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/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; upstream choseapp { server localhost:8080; server localhost:8081; } limit_conn_zone $binary_remote_addr zone=one:10m; server { listen 8089; server_name localhost; location / { root html; index index.html index.htm; } location /dw/ { limit_conn one 5; #限制链接数 #limit_rate 300k; #每一个链接限速大小 proxy_pass http://choseapp/dw/; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }