Nginx安装及配置
一、安装Nginx
1.1 Windows安装Nginx
1.1.1 下载Nginx
去官网下载Windows对应版本的Nginx
1.1.2 安装Nginx
解压下载的Nginx压缩包
1.1.3 启动Nginx
在解压出来的目录下找到nginx.exe文件
说明:以超级管理员身份运行nginx.exe
检查:
1.nginx默认占用端口号80 (部署tomcat服务器 环境变量path配置过)
2.检查任务管理器,查看服务是否正确启动
3.关于进程项说明 主进程: 主要负责反向代理等服务的. 守护进程: 防止主进程意外关闭的.
1.1.4 Nginx命令
在nginx根目录下在文件的地址栏输入cmd进入命令提示符界面。
1.启动 start nginx 不能保证100%成功,需要执行reload
2.重启 nginx -s reload 可以提示报错
3.关闭 nginx -s stop 可以提示报错
1.2 Linux安装Nginx
1.2.1 下载Nginx
去官网下载Linux对应版本的Nginx
1.2.2 安装Nginx
解压下载的Nginx压缩包
然后开始安装Nginx,在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。
Linux下检查是否安装过某软件包:
例如:查看是否安装了GCC
yum list installed | grep "gcc"
出现这种说明已经安装了GCC
查看其他几个只需要将命令中的gcc换成对应的名称即可。
安装命令:
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
然后进入nginx目录
cd nginx-1.15.10/
进行配置,执行以下命令:
./configure --prefix=/usr/local/src/nginx
然后可以执行下面的命令了
make
make install
测试是否安装成功
cd到刚才配置的安装目录cd /usr/local/src/nginx/
./sbin/nginx -t
正常的输出情况:
nginx: the configuration file /usr/local/src/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/src/nginx/conf/nginx.conf test is successful
1.2.3 启动Nginx
cd /usr/local/src/nginx/sbin
./nginx
Nginx启动成功后,在浏览器输入IP地址,会有如下显示
二、Nginx实现反向代理入门
打开nginx安装目录下conf文件夹中的nginx.conf文件
其中Http节点下的server节点中有如下配置
http {
server {
#监听端口号
listen 80;
#监听的域名
server_name localhost;
#反向代理的配置项 / 是正则表达式写法
location / {
#root 关键字 代表文件夹目录
root html;
#默认页面跳转
index index.html index.htm;
}
}
}
三、Nginx高级
3.1 域名代理
3.1.1 业务说明
用户通过www.dh.com时访问服务器地址localhost:8091
3.1.2反向代理配置
server{
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://localhost:8091;
}
}
3.2 Nginx负载均衡配置
3.2.1 负载均衡说明
当用户访问服务器时,其实访问的是nginx代理服务器,访问真实的tomcat服务器.之后利用负载均衡策略实现tomcat集群的部署.
3.2.2 部署多台tomcat服务器
说明:分别部署3台tomcat服务器.端口号分别8081/8082/8083,将一个项目打包并部署到三台服务器,然后启动服务器进行测试
3.3Nginx负载均衡策略
3.3.1轮询策略
说明:按照配置文件顺序,依次访问tomcat服务器.
3.3.1.1配置集群信息
#配置window tomcat集群
upstream jtWindows {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
3.3.1.2集群引用配置
server{
listen 80;
server_name manage.jt.com;
location / {
#proxy_pass http://localhost:8091;
proxy_pass http://jtWindows;
}
}
3.3.2权重策略
说明:根据物理机情况,人为规定访问顺序.按照权重方式进行访问.
配制顺序:
#配置window tomcat集群
upstream jtWindows {
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
3.3.3IPhash策略
3.3.3.1业务需求
当用户做敏感操作时,可能需要用户权限校验.之前利用Shiro框架将用户信息保存到了Session对象中.但是有tomcat集群搭建.可能导致Session无法共享数据.导致用户频繁登录.用户体验差.
3.3.3.2问题核心
说明:上述问题关键点 Session不能共享.
3.3.3.3IPhash策略说明
说明:根据用户的IP地址进行hash运算之后将值与tomcat服务器进行绑定.这样实现了用户只需要登录一次,即可免密登录.
#配置window tomcat集群
upstream jtWindows {
ip_hash;
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
3.3.3.4IPhash存在问题
1.可能会导致负载不均现象
2.如果某台tomcat服务器宕机,则可能影响用户的使用
在工作中使用SSO单点登录的方式,实现用户信息共享.
SSO:如果用户登录一次,则可以免密访问相互之间信任的系统.
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他联邦系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的
3.4Nginx高级用法
3.4.1down属性
说明:如果后台监控发现其中某台服务器发生宕机现象,则可以手动的修改nginx的配制文件,将宕机的服务器手动改为down.这样nginx就不会再次访问故障机.
#配置window tomcat集群
upstream jtWindows {
#ip_hash;
server localhost:8081 down;
server localhost:8082;
server localhost:8083 backup;
}
3.4.2backup属性
说明:备用机机制.正常情况下该服务器不会为用户提供服务.当服务器遇忙时或者服务器宕机时,备用机才会生效.
#配置window tomcat集群
upstream jtWindows {
#ip_hash;
server localhost:8081 down;
server localhost:8082 down;
server localhost:8083 backup;
}
3.4.3如何实现在线部署
项目规模:5台tomcat服务器.
实现步骤:
1.将需要部署的服务器进行分类.
2.修改nginx配制文件,将要上线的tomcat标识为down.之后重启nginx服务器.
3.将down调用的服务器进行jar包部署. java -jar xxxx.jar/war
4.将down关键字去掉之后部署启动服务器.
3.4.4Nginx tomcat高可用实现
3.4.4.1业务说明
如果后台服务器宕机.nginx会在一定的时间之后不会访问故障机.但是依然会在下一个周期访问故障服务器.导致用户体验差.
改进:如果遇到tomcat服务器宕机,则在nginx配制文件中添加down属性.这些操作都是自动的!!!
3.4.4.2高可用配置项
upstream jtWindows {
#ip_hash;
server localhost:8081 max_fails=1 fail_timeout=60s;
server localhost:8082 max_fails=1 fail_timeout=60s;
server localhost:8083 max_fails=1 fail_timeout=60s;
}
max_fails=1 访问服务器最大的失败次数1次. 之后nginx不会再次访问故障机.
fail_timeout=60s; 如果服务器访问不成功,则在60秒内,不会再次访问故障机.直到下一个周期.
定义超时时间:
说明:如果在指定的时间之后用户访问超时,则根据配制文件的顺序,访问下一台服务器.
#配置后台管理系统 需要配置hosts文件
server{
listen 80;
server_name manage.jt.com;
location / {
#proxy_pass http://localhost:8091;
proxy_pass http://jtWindows;
proxy_connect_timeout 2;
proxy_read_timeout 2;
proxy_send_timeout 2;
}
}