1. nginx基本概念
- Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
- Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
- Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。
2. 反向代理
正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)
反向代理: 对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)
3. 负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
简单来说就是:现有的请求使服务器压力太大无法承受,所以我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一个问题。
Nginx给出来三种关于负载均衡的方式:
轮询法(默认方法): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
weight权重模式(加权轮询):
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的 情况。
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
ip_hash:
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4. 动静分离
Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块,Apache,tomcat处理。
在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式
目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!
nginx安装
1.使用远程工具Xshell链接linux系统
2.官网下载链接
3.第一步安装pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
解压压缩文件
进入解压目录执行./configure
温习提示:在执行命令时如果遇到报错,可以直接百度install缺少的东西
使用make && make install
检查是否安装成功
第二步 安装openssl,zlib
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
第三步 安装nginx
解压缩nginx-xx.tar.gz(下载压缩包到本地,直接拖入虚拟机)
进入解压目录执行./configure
使用make && make install
检查是否安装成功
nginx启动命令
启动进程查看
查看开放端口号:
firewall-cmd --list-all
设置开放的端口号
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
家人们,成功开启nginx啦啦啦啦啦!!!
ps:在浏览器中输入你的ip地址
nginx常用命令
使用nginx操作命令,必须先进入nginx目录
首先进入目录
/usr/local/nginx/sbin
1.查看nginx版本号
./nginx -v
2.启动nginx
ps -ef | grep nginx
3.关闭nginx
./nginx -s stop
4.重新加载nginx
./nginx -s reload
1.查看nginx版本号
2.启动nginx
3.关闭nginx
4.重新加载nginx
nginx配置文件
- 位置:/usr/local/nginx/conf/nginx.conf
- nginx配置文件组成
全局块
全局块是默认配置文件从开始到events块之间的一部分内容,主要设置一些影响Nginx服务器整体运行的配置指令,因此,这些指令的作用域是Nginx服务器全局。
通常包括配置运行Nginx服务器的用户(组)、允许生成的worker process数、Nginx进程PID存放路径、日志的存放路径和类型以及配置文件引入等。
events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接。常用到的设置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个worker process可以同时支持的最大连接数等。
这一部分的指令对Nginx服务器的性能影响较大,在实际配置中应该根据实际情况灵活调整
http块
http块是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这个模块中。
前面已经提到,http块中可以包含自己的全局块,也可以包含server块,server块中又可以进一步包含location块,在本书中我们使用“http全局块”来表示http中自己的全局块,即http块中不包含在server块中的部分。
可以在http全局块中配置的指令包括文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等。
nginx配置实例(反向代理实例一)
实现效果
打开浏览器,在浏览器地址栏输入地址www.123.com,跳转linux系统tomcat主页里
准备工作
-
linux系统安装tomcat,使用默认端口8080
tomcat下载地址(像上面步骤对压缩包进行操作) -
启动tomcat,系统中会自带jdk
./startup.sh
成功启动tomcat
- 对外开放访问端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
4. 在windows系统中通过浏览器访问tomcat服务器
具体配置
- 在windows系统的host文件进行域名和ip对应关系配置
- 添加内容在hosts文件中
修改过程中遇到权限问题请点击也许可以解决你的问题
修改完hosts文件在浏览器中输入www.123.com可以访问到如下界面
3.在ngnix进行请求转发配置(反向代理)
首先进入nginx配置文件
修改server_name为ip地址:
在location中加入转发路径,proxy_pass:(反向代理配置):
4.测试
一定一定要重新加载一下nginx再输入www.123.com才能成功哦!!!
nginx配置实例(反向代理实例二)
实现效果
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001.
访问http://192.168.182.128.9001/edu/ 直接跳转到127.0.0.1:8080
访问http://192.168.182.128.9001/vod/ 直接跳转到127.0.0.1:8081
准备工作
- 准备tocmcat服务器,一个8080端口,一个8081端口
分别向两个文件夹里拖入tomcat压缩包进行解压
8080文件夹
8081文件夹
修改配置文件server.xml端口号
修改shutdown端口号
再次启动8081tomcat
测试启动成功
2. 创建文件夹和测试页面
新建edu文件夹
进入edu文件夹,将在桌面新建好的a.html文件拖入虚拟机
在网页中输入文件可以显示a.html内容
相同操作8081
3. 具体配置
(1) 找到ngnix配置文件,进行反向代理配置
修改监听端口9001,添加location中的proxy_pass(如果路径中有edu就到8080端口号,如果路径中有vod就到8081端口号)
(2) 开放对外访问端口号9001,8080,8081(上面有介绍,firewall…)
(3) 测试
首先关闭nginx
再次启动
访问9001端口号成功