由于单纯用 tomcat 只能通过 ip + 端口号的形式访问, 这样只能访问一个 tomcat, 而真实项目中又不可能只用一两个 tomcat, 所以就需要 Nginx 来进行分配访问请求, Nginx 本身性能非常好, 据官网介绍, 每秒支持 50Wtps
Nginx 只是负责转发请求, 不处理逻辑,
Nginx 还有一个做一作用, 就是负载均衡
Nginx 下有个 html 文件夹, 可以存放项目 HTML 静态文件
Nginx: 反向代理服务器
web 服务器: 转发请求, nginx,apache, 类似于服务员 (传菜的)
应用服务器: tomcat, 处理动态的语言, 处理逻辑, 类似于厨师 (做菜的)
Nginx 安装
安装 Nginx 前需要先安装 pcre,zlib,OpenSSL 等模块, 手动安装比较繁琐
本次 nginx 安装直接使用自动化脚本 install.sh 安装
1, 首先确保安装包放到 / usr/local/src 目录下
2, 进入到解压后的目录下 cd /usr/local/src/auto_setup_nginx_new
3, 赋权限 chmod +x ./*
4, 执行安装脚本 ./install.sh, 安装过程大概一分钟
5, 安装成功后, nginx 会自动安装到 / export/servers 目录
Nginx 配置文件修改
进入 conf 文件夹
nginx.conf 需要修改内容:
1,user: 是否是 root
2,worker_processes: 几个内核, 查看 CPU 核数: cat /proc/cpuinfo, 另外一种是 top 命令, 然后按 1
查看 CPU 核数
由于只有一个核, 所以 worker_processes 设置为 1
3,worker_cpu_affinity: 对应上一个配置, 用二进制形式写出来 (0-x)proxy_passproxy_pass
第一个数字代表一个核, 每增加一个核, 数字 * 10
如: 以下为 8 核, 若 16 核则应该为 0000000000000001 开始
4, 日志的 path: 自定义
worker_rlimit_nofile: 每个 worker 可以支持多少个链接, 核数 * 65535
error_page: 错误页面, 一旦出现以下错误, 直接跳转到自己设置的页面
5,include domains/* 关注这个配置, 存放 tomcat 相关的配置, 默认不用改
每个人 tomcat 的配置文件都放这里, Nginx 自动全部导进配置
6, 拷贝 / usr/local/src / 下的 xxx.demo.com 到 / export/servers/nginx/conf/domains 目录下
为 teach 项目准备的, 所以起个明显的名字, 如 www.teach.com
7,vi www.teach.com
8, 注意 upstream 后的名字和 proxy_pass 保持一致, upstream 里面所配的就是负载均衡的配置
9,server 192.168.1.209:8080 weight=10 max_fails=2 fail_timeout=30s; 有几个 tamcat, 配置几个, weight: 权重, 每个 tomcat 分配的负载比例
由于前面我给 teach 项目配了两个 tomcat, 一个 8080, 一个 8090
10,server name, 修改成跟 xxx.demo. 一致即可, 此域名非向运营商注册的域名
项目日志, 错误日志
11, 在 nginx 的 sbin 目录下, 执行./nginx 即可启动 nginx,./nginx -s reload 重启 nginx
cd /export/servers/nginx/sbin
执行命令./nginx, 没有日志, 如果有日志一般就是错误日志, 就要去检查配置有没有配错
12, 默认情况下, nginx 的日志在 logs 目录下, access.log 和 error.log
13, 启动 nginx, 在浏览器中通过 ip 直接访问 PerfTeach 的接口, 或者配上 host, 通过域名访问 (先通过 ip + 端口号的形式访问, 以确认单独的 tomcat 是没问题的, 确认没问题了再通过域名访问)
先去系统 host 文件中映射服务器 ip 和域名
在浏览器中输入 www.teach.com/PerfTeach/login.jsp 访问
同理可设置 OA 项目
重启 Nginx:./nginx -s reload
访问: http://www.oa.com/TestOA/userAction_loginUI.action
Nginx 负载均衡配置
Nginx 负载均衡策略
1, 轮询: 默认策略, 轮流分配请求
2,ip_hash: 根据 ip 进行 hash 算法, 固定的 ip 分配到固定的后端 server
3,fair: 根据后端 server 的响应时间来分配请求, 响应时间短的优先分配
4,url_hash: 根据 url 进行 hash 算法, 固定的 url 分配到固定的后端 server
Nginx 访问日志配置
Nginx 的 logs 目录 access.log 会显示每一次访问的日志
访问日志:
修改 nginx.conf 配置文件中
log format main 配置项中添加 $request_time 可以在 access.log 中显示请求时间, 单位秒
重启 Nginx:./nginx -s reload
回到 log 目录下: tail -f access.log
刷新一下网页, 多了一个响应时间
此日志记录的时间, 为从请求到 Nginx 开始, 到离开 Nginx 回到客户端所耗费的时间
前面讲的 tomcat 的日志时间, 为从请求到 tomcat, 到离开 tomcat 回到客户端的时间
来源: http://www.bubuko.com/infodetail-2915908.html