1 相关概念
nginx介绍点这里。
- 正向代理:对于服务端,并不清楚是哪个客户端来访问
- 反向代理:对于客户端,并不清楚访问的是哪个服务器,暴露的只是代理地址
- 负载均衡:将以前请求集中到单个服务器的情况改为将请求分散到多个服务器上,将负载分发到不同的服务器就是负载均衡
- 动静分离:让动态页面和静态页面由不同的服务器来解析,降低原来单个服务器的压力
- 高可用:防止nginx服务器宕机,配置多台nginx服务器,主(MASTER)和备(BACKUP),请求默认访问主服务器,在转发到不同的Tomcat。当主服务器宕机就切换到备服务器继续工作。
2 安装
2.1 安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.2 安装pcre
1、把 pcre-8.43.tar.gz 压缩文件放到Linux系统的 /usr/local/src 下
2、进入该目录并解压
[root@localhost src]# tar -zxvf pcre-8.43.tar.gz
3、进入解压后的目录
4、执行 ./configure
5、执行 make && make install
6、执行 pcre-config --version 可查看版本号
2.3 安装nginx
1、把 nginx-1.16.1.tar.gz 压缩文件放到Linux系统的 /usr/local/src 下
2、进入该目录并解压
3、进入解压后的目录
4、执行 ./configure
5、执行 make && make install
2.4 给防火墙开放端口
1、安装好并运行nginx后,默认外面的宿主机是连接不上虚拟机的nginx首页的,需要给防火墙开放80端口
firewall-cmd --add-port=80/tcp --permanent
2、提示"success"后,再重新加载防火墙
firewall-cmd --reload
3、其他防火墙相关指令有:
# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
# 查看防火墙信息,如开放的端口
firewall-cmd --list-all
# 关闭防火墙
systemctl stop firewalld
3 常用命令
先进入 /usr/local/src/nginx/sbin/ 目录
| 命令 | 作用 |
|---|---|
| ./nginx -v | 查看版本号 |
| ./nginx -s stop | 关闭nginx |
| ./nginx | 启动nginx |
| ./nginx -s reload | 重新加载配置文件 |
| ./nginx -s reopen | 重启nginx |
| ./nginx -c 配置文件 | 指定配置文件启动 |
4 配置文件
配置文件路径为 /usr/local/nginx/conf/nginx.conf,分为三大部分:
- 全局块:文件开头到events。设置nginx整体运行时的相关配置,比如worker_processes值越大,可支持的并发处理量越大
- events块:设置nginx服务器与用户的网络连接,比如worker_connections表示最大连接数
- http块:该部分又分为两部分,http全局块和server块。http全局块包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等
5 反向代理
实现效果:在Windows浏览器中输入www.123.com能映射到Linux系统中的Tomcat首页。
1、在 C:\Windows\System32\drivers\etc\HOSTS 文件中添加如下内容
# 前面是Linux虚拟机的地址,该配置相当于把这两个地址形成映射关系
192.168.18.130 www.123.com
2、修改nginx配置文件的两处地方
3、达成效果
6 负载均衡
实现效果:在浏览器地址栏输入http://192.168.18.130/hello/a.html,让请求分散到8080端口的Tomcat和8081端口的Tomcat。
6.1 准备工作
1、准备两个Tomcat,并修改其中一个的server.xml配置文件,修改三处地方
2、分别在两个Tomcat的webapps文件夹中创建hello文件夹,再往里面创建a.html文件
6.2 配置nginx
在nginx.conf中添加或修改以下内容
6.3 实现效果
刷新浏览器会看到不同内容
6.4 负载均衡算法配置
-
轮询:有权重和无权重的算法不同,可参考这篇文章。权重的配置方式如下:
# 位于http全局块 upstream myserver { server 192.168.18.130:8080 weight=10; server 192.168.18.130:8081 weight=5; } -
ip_hash:计算每个访问IP的哈希值,使得每个用户都是访问固定的服务器,配置方式如下:
# 位于http全局块 upstream myserver { ip_hash; server 192.168.18.130:8080; server 192.168.18.130:8081; } -
fair:按服务器响应时间来分配请求,响应时间短的优先分配,配置方式如下:
# 位于http全局块 upstream myserver { fair; server 192.168.18.130:8080; server 192.168.18.130:8081; }