Nginx (发音:engine x) 是一个高性能的HTTP和反向代理web服务器。它有2个常见的应用场景:
-
反向代理Tomcat集群并实现负载均衡
-
充当静态资源(html、js、css、图片)服务器
Nginx的安装
-
下载并安装nginx的yum源
[root@localhost bin]# wget -P /tmp http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm [root@localhost bin]# cd /tmp [root@localhost tmp]# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
-
使用yum安装nginx
[root@localhost tmp]# yum install -y nginx
-
启动nginx
[root@localhost tmp]# systemctl start nginx [root@localhost tmp]# systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since 五 2020-05-29 02:23:00 CST; 6s ago Docs: http://nginx.org/en/docs/ Process: 40706 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 40707 (nginx) CGroup: /system.slice/nginx.service ├─40707 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf └─40708 nginx: worker process
-
关闭防火墙和selinux
[root@localhost tmp]# systemctl stop firewalld 关闭防火墙开机自启动 systemctl disable firewalld [root@localhost tmp]# getenforce [root@localhost tmp]# setenforce 0 永久关闭selinux:编辑 vi /etc/selinux/config SELINUX=disabled
-
访问
nginx默认占用80端口
注意:如果nginx访问出错,可以查看 /var/log/nginx/error.log
文件获取错误日志
反向代理
代理其实就是一个中介,A和B本来可以直连,中间插入一个C,A借助C和B连接,C就是代理。刚开始的时候,代理多数是帮助client访问server端,也就是正向代理。后来又有了帮助server端响应client请求的反向代理。
-
正向代理
正向代理用在client无法直接访问server端时。可以为client配置一个能访问server的代理,当client发送对server的请求时,实际上由代理发起对server的请求。
特点:
-
代理的是client
-
虽不直接建立连接,但server对client是可见的
-
client访问时,直接输入server的地址。
反向代理
反向代理常用于需要向client屏蔽server端的复杂设计时。
特点:
代理的是server端
server端对client是透明的不可见的
client访问时,输入的是代理的地址
Tomcat集群:
当接收大量的请求时,单一服务器终究无法满足需要处理的负荷量。可以组建多台Tomcat服务器提供相同的服务,均衡负载分摊请求,提高系统的扩展性和高可用性。
集群可以提高应用性能,但是增加了服务端设计的复杂性,解决方案:nginx的反向代理。
Nginx反向代理Tomcat集群:
-
克隆3台虚拟机,分别启动tomcat搭建集群
-
配置
/etc/nginx/conf.d/default.conf
启动nginx
3.启动nginx
通过nginx可以访问到tomcat集群中的服务。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
负载均衡
负载均衡(Load balancing),意思是将负载(工作任务,访问请求)进行平衡,用来在多个计算机(计算机集群)中分配负载,以达到集群系统整体的最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
Nginx的负载均衡策略:
-
轮询(默认)
-
优点:实现简单
-
缺点:不考虑每台服务器的处理能力
-
配置示例如下:
upstream 集群名 { # 需要负载的server列表 server ip1:port; server ip2:port; server ip3:port; }
-
权重(使用较多)
-
优点:考虑了每台服务器处理能力的不同,哪台机器性能高就给哪台机器的权重高一些
-
配置示例如下:
upstream 集群名 { # 需要负载的server列表,weight表示权重 server ip1:port weight=1; server ip2:port weight=2; server ip3:port weight=4; }
-
ip hash
-
优点:能实现同一个用户始终访问同一个服务器
-
缺点:根据 ip hash 不一定平均
-
配置示例如下:
upstream 集群名 { ip_hash; # 需要负载的server列表 server ip1:port; server ip2:port; server ip3:port; }
静态资源服务器(了解)
传统的web项目,一般都将静态资源存放在web应用中,这样做很方便获取静态资源。但是当web项目很大,用户很多,静态资源也很多时,应用服务器的性能就会很低下了。这种情况下一般都会需要一个静态资源的服务器。
Nginx作为静态资源服务器的搭建过程:
-
在linux服务器中创建文件夹,并上传静态资源
示例: mkdir -p /var/static
-
编辑
/etc/nginx/conf.d/default.conf