目录
一、Nginx简介
Nginx (engine x) 是一个高性能的HTTP和Reverse proxy Web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,Nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/Reverse proxy服务器及电子邮件(IMAP/POP3)proxy服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,可以同时支持50000个并发连接数,中国大陆使用nginx网站用户有:百度、京东、腾讯、淘宝等。
二、Nginx用途
2.1 Reverse proxy
在了解Reverse proxy之前我们先来看看什么是正向proxy,我们在Windows的设置中可以找到proxy这个选项。一般来说我们要访问服务器时,在知道对方的IP地址和MAC地址后就封装数据包,就直接向服务器发送请求。如果你设置了proxy服务器,那么你的请求会先到达proxy服务器,然后由proxy服务器再去访问目标资源。简单来说proxy就是代替客户端进行访问,而Reverse proxy就是代替服务器进行响应。
在客户端配置proxy服务器的地址 ,对指定的资源进行访问。
![](https://img-blog.csdnimg.cn/2021040216301158.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
当你访问某个资源时,如果设置了Reverse proxy,你的请求首先到达Reverse proxy服务器,再由Reverse proxy服务器与真实的服务器产生交互。这么做的好处就是安全,暴露的是proxy服务器的地址,隐藏了服务器的真实IP地址,可以有效防止攻击。
![](https://img-blog.csdnimg.cn/20210402162159245.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
2.2 负载均衡
简单来说就是增加了服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
![](https://img-blog.csdnimg.cn/20210401162834112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
2.3 动静分离
字面意思,把动态页面和静态页面由不同的服务器来解析,加快解析速度,这样服务器各司其职,就能加快网站的解析速度,降低原来单个服务器的压力。
![](https://img-blog.csdnimg.cn/20210401163323455.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
三、Nginx安装
在安装Nginx前我们首先要安装一些环境,下面是我实验中使用到的一些安装包,也可以直接使用。这里注意需要Linux联网,所以如果是虚拟机的话需要设置为NAT模式,保证Linux可以访问外网。
链接:https://pan.baidu.com/s/1W4tv8vYHeQNu3mbceNPguA
提取码:5hqp
3.1 准备工作
(1)第一个先安装prce。可以使用下面命令直接安装,也可以去官网下载安装包,在导入Linux主机中。(直接安装可能会比较慢,这里建议下载安装包,也可以使用我上面给的资源)。这里我们是在/usr/src/目录下进行解压和编译。
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
[root@localhost src]# tar -xvf pcre-8.37.tar.gz //解压文件
[root@localhost src]# ls
debug kernels pcre-8.37 pcre-8.37.tar.gz
[root@localhost test]# cd pcre-8.37 //进入解压好的目录内
[root@localhost pcre-8.37]# ./configure //配置
[root@localhost pcre-8.37]# make //编译
[root@localhost pcre-8.37]# make install //安装
[root@localhost pcre-8.37]# pcre-config --version //测试
8.37
出现版本号说明安装成功
(2)安装 openssl 、zlib 、 gcc 依赖。使用yum安装
[root@localhost pcre-8.37]# yum -y install zlib zlib-devel gcc-c++ libtool openssl openssl-devel
3.2 安装Nginx
首先将Nginx压缩包导入Linux主机中,然后进行解缩,编译和安装等操作。这里的安装步骤和上面的pcre一致。先将压缩包解压(http://nginx.org/en/download.htm,一般我们下载里面的稳定版本,这里我是用的是1.18版本)。
[root@localhost src]# tar -xvf nginx-1.18.0.tar.gz
[root@localhost src]# cd nginx-1.18.0/
[root@localhost nginx-1.18.0]# ./configure
[root@localhost nginx-1.18.0]# make && make install
注: 安装成功后,如果没有什么问题,就能在/usr/local目录下看到一个Nginx目录 ,而在Nginx目录中有一个sbin目录,这个目录中就存放这Nginx的启动命令
[root@localhost nginx-1.18.0]# cd /usr/local/
[root@localhost local]# ls
bin etc games include lib lib64 libexec nginx sbin share src
[root@localhost local]# cd nginx/
[root@localhost nginx]# ls
conf html logs sbin
[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ls
nginx
3.3 启动Nginx
首先进入到/usr/local/nginx/sbin/目录下,当你安装完成Nginx后会自动出现这个目录。然后启动Nginx。默认Nginx启动后监听的端口号为80。
[root@localhost nginx]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx //启动Nginx
[root@localhost sbin]# ps -ef| grep nginx //启动成功
root 17024 1 0 23:08 ? 00:00:00 nginx: master process ./nginx
nobody 17025 17024 0 23:08 ? 00:00:00 nginx: worker process
root 17048 3232 0 23:08 pts/0 00:00:00 grep --color=auto nginx
这时我们还不能用Windows访问到Nginx服务首页,因为Linux默认防火墙开启,这里我们是做实验可以选择关闭防火墙,或者将http服务加入到防火墙的允许列表中即可。完成防火墙的配置后,我们就可以使用Windows来访问Nginx服务了。
[root@localhost sbin]# firewall-cmd --add-service=http --permanent
[root@localhost sbin]# firewall-cmd --add-port=80/tcp --permanent
[root@localhost sbin]# firewall-cmd --reload //添加新的条目后一定要重新加载
![](https://img-blog.csdnimg.cn/20210402112726426.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
至此最基本的Nginx服务已经配置完成。