目录
Nginx概述
Nginx 四大应用场景
为什么用Nginx
环境准备
Nginx下载与安装
Nginx目录详解
Nginx概述
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。Nginx 专为性能优化而开发,使用异步非阻塞事件驱动模型。
常见服务器
- Apache
- Tomcat
举个栗子
没有Nginx的情况
有了Nginx的话
实时效果反馈
1. Nginx是____的事件驱动模型。
A 同步阻塞
B 同步非阻塞
C 异步阻塞
D 异步非阻塞
2. 下列描述Nginx说法错误的是。
A 它可以高并发连接
B 内存消耗少
C 配置文件非常简单
D Nginx是收费的
Nginx 四大应用场景
HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候, 就可以使用Nginx来做服务器,如果一个网站只是静态页面的话, 那么就可以通过这种方式来实现部署。
反向代理
反向代理应该是Nginx使用最多的功能了,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后 将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为 一个反向代理服务器。
负载均衡
负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和 经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
实时效果反馈
1. 下列针对Nginx描述错误的是____。
A 动静分离可以减轻服务器的压力
B 负载均衡可以提高项目的可用性
C 反向代理可以保证安全
D Nginx内存消耗大
为什么用Nginx
背景
互联网飞速发展的今天,大用户量高并发已经成为互联网的主体. 怎样能让一个网站能够承载几万个或几十万个用户的持续访问呢?
单机架构
Tomcat 默认配置的最大请求数是150,也就是说同时支持150 个并发。具体能承载多少并发,须要看硬件的配置,线程CPU 越多性能越高,分配给JVM的内存越多性能也就越高,但也会加剧GC的负担。
引入反向代理实现负载均衡
负载均衡就是一个web服务器解决不了的问题可以通过多个 web服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台web服务器来处理,这样压力就被分解开来。
总结
1、它可以高并发连接,官方测试能够支撑5万并发连接,在实际生产环境中可以支撑2到4万并发连接。
2、内存消耗少
3、购买F5 BIG-IP ,NetScaler等硬件负载均衡交换机需要10多万甚至几十万人民币。而Nginx为 开源软件,可以免费试用,并且可用于商业用途。
4、内置的健康检查功能:如果Nginx proxy后端的某台服务器宕机了,不会影响前端访问。 5、节省带宽,支持gzip压缩。
6、稳定性高:用于反向代理(负载均衡),宕机的概率微乎其微。
7、支持热部署。在不间断服务的情况下,对软件版本升级。
实时效果反馈
1. 下列针对选择Nginx理由错误的是。
A 节省带宽
B 稳定性好
C 不支持压缩
D 内存消耗少
2. Nginx技术中负载均衡主要解决什么问题。
A 高并发
B 速度慢
C 稳定性
D 安全性
环境准备
学习环境
操作系统:Centos7.5 X64
四项确认
1、确认网络
2、确认yum可用
3、确认防火墙
4、确认SELinux
一项安装
yum -y install gcc make automake pcre-devel
zlib zlib-devel openssl openssl-devel
参数:
gcc:编译依赖gcc环境
pcre:PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl 兼容的正则表 达式库。
zlib:zlib库提供了很多种压缩和解压缩的方式,Nginx使用zlib对http包的内容进行gzip,所 以需要在linux上安装zlib库。
Openssl:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥 和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
实时效果反馈
1. Linux系统中关闭防火墙命令正确的是。
A systemctl stop firewalld.service
B systemctl disable firewalld.service
C systemctl restart firewalld.service
D systemctl start firewalld.service
2. 下列可以确定Linux系统中是否有网络正确的命令是。
A ping www.baidu.com
B yum -list gcc
C service network restart
D souce /etc/profile
Nginx下载与安装
下载Nginx源码
官网下载Nginx软件:http://Nginx.org
点击download进入下载页面
Nginx 官方提供了三个类型的版本:
Mainline Version:主线版,是最新版,但未经过过多的生产测 试。
Stable Version:稳定版,生产环境使用版本。
Legacy Version:老版本。
注意:
我们需要下载的是 Stable Version。其中又分为两种版本: Linux 版与 Windows 版。开发时这两个版本我们都下载。 Linux 版用于生产环境,而 Windows 版用于开发测试,选择需要的版本进行下载。
Nginx源码编译
1.创建存放源文件的文件夹
首先在目录/opt下创建apps目录,用于存放源文件以及解压后的文件
2.上传Nginx到步骤1创建的目录下
3.解压 Nginx
[root@node1 apps]# pwd
/opt/apps
[root@node1 apps]# ls
Nginx-1.20.1.tar.gz
[root@node1 apps]# tar -zxvf Nginx-1.20.1.tar.gz
[root@node1 apps]# cd Nginx-1.20.1
进入到 Nginx 解压包目录/opt/apps/Nginx-1.20.1 目录中,查看 Nginx 的目录。
其中各个目录中存放的文件作用为:
auto:存放 Nginx 自动安装的相关文件
conf:存放 Nginx 服务器配置文件
configure:命令,用于对即将安装的软件的配置,完成 makefile 编译文件的生成
contrib:存放由其他机构贡献的文档材料
html:存放 Nginx 欢迎页面
man:manual,手册,存放 Nginx 帮助文档
src:存放 Nginx 源码
4.生成 makefile
在 Nginx 解压目录下运行 make 命令,用于完成编译。但此时会给出提示:没有指定目标,并且没有发现编译文件 makefile。
[root@node1 Nginx-1.20.1]# make
make: *** 没有指明目标并且找不到 makefile。 停止。
编译命令 make 需要根据编译文件 makefile 进行编译,所以在编译之前需要先生成编译文件 makefile。使用 configure 命令可以生成该文件。那么,configure 命令需要配置些什么参数呢?使用--help 可以查看到可以使用的参数说明。
configure 参数:
--prefix:Nginx 安装目录。注意,安装目录与解压目录不一样
--sbin-path:Nginx 命令文件
--modules-path:Nginx 模块存放路径
--conf-prefix:Nginx 配置文件存放路径
--pid-path:Nginx 的进程 id 文件
--error-log-path:错误日志文件
--http-log-path:http访问日志文件
安装编译参数
5.配置参数
[root@node1 Nginx-1.20.1]# mkdir -p
/var/temp/nginx/client
[root@node1 Nginx-1.20.1]# pwd
/opt/apps/nginx-1.20.1
[root@node1 Nginx-1.20.1]# ./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy
\
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
注意: /var/temp/Nginx/client目录需要手动创建。
编译安装
make && make install
这是两个命令,make 为编译命令,make install 为安装命令, 可以分别执行。这里使用&&将两个命令连接执行,会在前面命令执行成功的前提下才会执行第二个命令。
实时效果反馈
1. 安装Nginx时如何指定安装目录
A --sbin-path
B --modules-path
C --conf-path
D --prefix
Nginx目录详解
#安装目录由--prefix=/usr/local/Nginx
[root@node1 ~]# cd /usr/local/Nginx/
[root@node1 Nginx]# ll
总用量 0
drwxr-xr-x 2 root root 333 8月 27 15:37 conf
drwxr-xr-x 2 root root 40 8月 27 15:37 html
drwxr-xr-x 2 root root 6 8月 27 15:37 logs
drwxr-xr-x 2 root root 19 8月 27 15:37 sbin
注意:
执行命令 tree /application/Nginx ;如果tree命令找不到就执行
yum install tree -y安装
conf目录
Nginx所有配置文件的目录,极其重要。在该目录中包含一个
Nginx.conf配置文件。
[root@node1 Nginx]# ll conf/
总用量 68
-rw-r--r-- 1 root root 1077 8月 27 15:37
fastcgi.conf
-rw-r--r-- 1 root root 1077 8月 27 15:37
fastcgi.conf.default
-rw-r--r-- 1 root root 1007 8月 27 15:37
fastcgi_params
-rw-r--r-- 1 root root 1007 8月 27 15:37
fastcgi_params.default
-rw-r--r-- 1 root root 2837 8月 27 15:37
koi-utf
-rw-r--r-- 1 root root 2223 8月 27 15:37
koi-win
-rw-r--r-- 1 root root 5231 8月 27 15:37
mime.types
-rw-r--r-- 1 root root 5231 8月 27 15:37
mime.types.default
-rw-r--r-- 1 root root 2656 8月 27 15:37
Nginx.conf
-rw-r--r-- 1 root root 2656 8月 27 15:37
Nginx.conf.default
-rw-r--r-- 1 root root 636 8月 27 15:37
scgi_params
-rw-r--r-- 1 root root 636 8月 27 15:37
scgi_params.default
-rw-r--r-- 1 root root 664 8月 27 15:37
uwsgi_params
-rw-r--r-- 1 root root 664 8月 27 15:37
uwsgi_params.default
-rw-r--r-- 1 root root 3610 8月 27 15:37
win-utf
html目录
Nginx的默认站点目录。
[root@node1 Nginx]# ll html/
总用量 8
-rw-r--r-- 1 root root 494 8月 27 15:37
50x.html #错误提示页面
-rw-r--r-- 1 root root 612 8月 27 15:37
index.html #访问Nginx时的首页
logs目录
存放Nginx的日志文件。 access.log error.log
#刚安装完Nginx,从未启动过的话logs目录下什么都没有,
只有启动Nginx后,才会出现以下三个文件
[root@node1 Nginx]# ll logs/
总用量 4
-rw-r--r-- 1 root root 0 8月 27 16:29
access.log #记录正常访问的日志
-rw-r--r-- 1 root root 0 8月 27 16:29
error.log #错误日志
-rw-r--r-- 1 root root 6 8月 27 16:29
Nginx.pid #Nginx进程id
[root@node1 Nginx]# cat logs/Nginx.pid
24514 #当前启动Nginx的master进程的id
sbin目录
Nginx命令的目录,如Nginx的启动命令。
[root@node1 Nginx]# ll sbin/
总用量 5884
-rwxr-xr-x 1 root root 6023208 8月 27 15:37
Nginx #启动关闭等操作的脚本
[root@node1 Nginx]# ./sbin/Nginx #启动Nginx
[root@node1 Nginx]# ps aux|grep Nginx #查看
Nginx的进程
root 24514 0.0 0.1 45996 1136 ?
Ss 16:29 0:00 Nginx: master process
./sbin/Nginx
nobody 24515 0.0 0.1 46444 1876 ?
S 16:29 0:00 Nginx: worker process
实时效果反馈
1. 下列不属于Nginx目录的是。
A html
B conf
C local
D sbin
2. 如何查看Nginx的进程__。
A ps aux|grep Nginx
B ./sbin/Nginx
C lsof -i:80
D ps list