NGINX
1、Nginx的基本概念
1、什么是Nginx(engine x)
Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现的较好
专门为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负责的考验,支持高达50000个并发连接数。
2、反向代理
正向代理:如果把internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,,,,在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
**反向代理:**其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,有反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
3、负载均衡
当一个服务器解决不了太多请求,应该增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是负载均衡。
4、动静分离
为了加快网站解析速度,可以吧动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
2、Nginx的安装
需要安装的依赖:pcre、openssl、zlib、nginx
使用安装包安装pcre,
使用yum 安装zlib:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
(一键安装所有依赖):yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
然后安装nginx:安装成功之后再/usr/local会有一个nginx文件夹,在sbin中有启动脚本
3、Nginx常用命令
必须进入到nginx的目录(/usr/local/nginx)中才能用
1、查看版本好
./nginx -v
2、启动nginx
./nginx
3、关闭nginx
./nginx -s stop
4、重新加载nginx
./nginx -s reload
4、Nginx的配置文件
在/usr/local/nginx/conf/nginx.conf
关于其组成:三部分组成
第一部分:全局块
主要是设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组),允许生成的wprder process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等
worker_processes:服务器处理并发服务的关键配置,数值越大可以支持的并发处理数量也越多,会受到硬件软件的制约
第二部分:events块
涉及的指令主要影响nginx服务器与用户的网络连接
worker_connections:支持的最大连接数
第三部分:http块
设置最频繁的地方,代理缓存和日志定义等绝大部分功能和第三方模块的配置都在这里,包括:http全局快、server块
http全局块:http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
**server块:**和虚拟主机有密切联系,每个http块可以有多个server块,每个server块相当于一个虚拟主机,每个server块有分为:全局server块和localtion块
**全局server块:**主要是配置虚拟主机的监听配置和虚拟主机的名称或者IP配置
**localtion块:**主要是基于Nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行配置,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有第三方模块的配置
5、配置实例-Nginx的反向代理
1、实现效果
打开浏览器,在浏览器中输入www.123.com,跳转到linux系统的tomcat的主页面中
<!--修改的地方 -->
server {
listen 80;
#server_name localhost;
server_name 192.168.133.130;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
server {
listen 9001;
server_name 192.168.133.130;
location ~ /etc/ {
proxy_pass http://127.0.0.1:8081;
}
location ~ /voa/ {
proxy_pass http://127.0.0.1:8082;
}
}
6、配置实例-Nginx的负责均衡
在http里边加
upstream myserver {
server 192.168.133.130:8081;
server 192.168.133.130:8082;
}
server {
listen 80;
server_name 192.168.133.130;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
1、默认是轮询策略
2、weight(权重策略)
weight 代表权重默认1,权重越高被分配的客户端越多
server 192.168.133.130:8081 weight=5;
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题,
upstream myserver {
ip_hash;
server 192.168.133.130:8081;
server 192.168.133.130:8082;
}
4、fair(第三方)
按照后端服务器的响应时间来分配请求,相应时间短的优先分配
upstream myserver {
server 192.168.133.130:8081;
server 192.168.133.130:8082;
fair;
}
7、配置实例-Nginx动静分离
1、什么是动静分离
2、配置
server {
listen 80;
server_name 192.168.133.130;
location /www/ {
root /root/;
index index.html index.htm;
}
location /image/ {
root /root/;
autoindex on;//可以显示目录列表
}
8、Nginx配置高可用集群
1、什么是Nginx的高可用
一般情况下,Nginx宕机之后,请求就无法实现。高可用就是针对这种情况
2、准备工作
安装nginx和keeplived(yum install keeplived -y)
3、修改keeplived.conf文件
**第一步分为:**全局配置
看配置的最后一行:配置主句名称
主机名称配置在/etc/hosts中:192.168.133.130 jjx-server
**第二部分为:**脚本配置
**第三部分为:**虚拟IP配置
创建nginx_check.sh文件
启动keepalived:
systemctl start keeplived.service
9、Nginx的原理
1、master和worker
[root@jjx-server data]# ps -ef|grep nginx
root 19749 1 0 09:43 ? 00:00:00 nginx: master process ./nginx
nobody 24494 19749 0 10:18 ? 00:00:00 nginx: worker process
root 25347 20303 0 11:00 pts/3 00:00:00 grep --color=auto nginx
2、worker如何进行工作
3、一个master和多个worker的好处
1、可以使用nginx -s reload热部署,利于nginx进行热部署操作
2、每个worker都是独立的进程,不需要加锁,也可以保证一个worker出现问题其他worker还可以继续进行工作,实现请求过程,不会造成服务中断
4、应该设置多少个worker
一般来说worker的数量和cpu的数量相等最为适宜
5、连接数worker_connection
第一个:发送请求,占用了worker的几个连接数
2个或者4个,因为,可能访问静态资源,一个请求一个响应,加上,tomcat的一个请求一个响应
第二个:nginx有一个master,四个worker,每个worker支持最大的连接数为1024,支持的最大并发数是多少
普通的静态访问最大并发数是:worker_connections*worker_processes/2。
如果是HTTP作为反向代理,最大并发数量是worker_connections*worker_processes/4。