Nginx 简介
Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,同时还 是一个电子邮件服务器。
Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第 二的 Rambler.ru 站点开发的一款服务器。2004 年 10 月发布第一个版本。
国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了 Nginx。
代理服务器
代理服务器根据其代理对象的不同,可以分为正向代理服务器与反向代理服务器。这里 的“正”与“反”均是站在客户端角度来说的。
正向代理
客户端---http--->代理服务器----->真实服务器(返回结果)
在这个过程中客户端是知道真实服务器,也知道代理服务器,但是客户端的请求都是所做的请求都是由代理服务器来处理。
反向代理
反向代理 Reverse Proxy,是对服务端的代理。单从功能示意图上看,好像反向代理与正 向代理没有区别,都是架设在客户端与服务端间的主机。但反向代理是服务端架设的主机, 与客户端无关。客户端认为其访问的是服务器本身,但其真正访问是反向代理服务器。
客户端在使用反向代理服务器时,根本就不知道自己真正要访问的目标服务器的地址及 信息,所有的访问都是通过代理完成的。这点上是与正向代理服务器不同的。
安装Nginx
1. 官网下载相应nginx版本tar包
2. 使用xftp上传到linux
3. 解压tar包
4. 安装所需依赖
- yum install pcre-devel
- yum install zlib zlib-devel
- yum install openssl openssl-devel
- yum -y install gcc gcc-c++ autoconf automake make 安装c++编译环境
5. 进入解压开的nginx-1.16.1文件夹找到 configur 执行
6. 然后执行 make(nginx是一个完全由C语言编写的程序make命令是将文件编译就想java的javac一样)
7. 在执行make install(make install这个命令是将nginx安装)
安装好后可以在./usr/local/目录下发现一个nginx的文件夹.
这个就是安装好后的nginx。安装好后目录结构如下
启动nginx
1.Nginx用的是80端口 , 把端口对外开放
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
2.启动:安装好的nginx目录中有一个sbin,里面是一个nginx(可执行文件执行 ./nginx )
3.启动后直接在网页输入本机ip即可访问 页面如下
Nginx常用命令
- /usr/local/nginx/sbin/nginx # 启动nginx
- /usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
- /usr/local/nginx/sbin/nginx -s reopen # 重启 Nginx
- /usr/local/nginx/sbin/nginx -s stop # 停止 Nginx
- /usr/local/nginx/sbin/nginx -t #检查配置文件是否正确
修改nginx.conf配置文件实现反向代理
文件: /usr/local/nginx/conf/nginx.conf是核心配置文件
1.修改windows系统目录中的hosts文件, ip为虚拟机里面的地址
地址:C:WindowsSystem32driversetchosts
2.在http块中添加upstream块
tomcat是安装在本机ip地址127.0.0.1即是在别的服务器者需要修改ip
upstream tomcat_server{
server 127.0.0.1:8080;
}
3.修改server块
server_name
it.nginx.com; #自定义访问域名
root /home/nginx/tomcat_data/; #静态文件存放路径
index index.html; #定义首页
4.修改server下的location块
proxy_pass http://tomcat_server; #映射对应upstream
proxy_set_header X-Real-IP $remote_addr; #映射nginx真实ip
proxy_set_header Host $Host;
5.先检查配置文件是否正确
/usr/local/nginx/sbin/nginx -t(出现以下日志则可以重启nginx了)
6./usr/local/nginx/sbin/nginx -s reload 修改了配置,重启配置.再访问it.nginx.com
使用Nginx实现负载均衡
首先启动两台Tomcat服务器
1. 然后在nginx配置文件中修改upstream 添加两个ip地址分别是
upstream tomcat_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
2.其他配置文件可以不用修改,直接检查即可 (/usr/local/nginx/sbin/nginx -t)通过即可运行nginx
可以看见同一个前端代码访问了不同的后端。
Nginx负载均衡策略
- 轮询
nginx默认的负载均衡策略既是轮询,轮询就是从上到下一个一个执行
- 权重方式(weight)
权重方式,在轮询策略的基础上指定轮询的几率
在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如8080被访问的几率为其他服务器的两倍
- Ip_hash(保证每个访客固定访问一个后端服务器)
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
- least_conn
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。