一、nginx 静态服务器
1、nginx 简介
Nginx (engine x) 是一款轻量级的、高性能的 HTTP 和反向代理服务器,也是一个电子邮件(IMAP/POP3)和
SMTP 服务器。
2、nginx 能做什么?
- 反向代理
- 正向代理
- 负载均衡
- HTTP 服务器(包含动静分离)
3、nginx 特点
- 开源免费,安装简单,配置简洁,服务器本身的 Bugs 非常少;
- 稳定的性能,丰富的功能集、示例配置文件和低系统资源的消耗;
- 占有内存少,并发能力强 (能够支持高达 50,000 个并发连接数的响应 )。
4、nginx 简单使用
-
登录官网 http://nginx.org/en/download.html,下载 nginx 文件。这里下载 nginx-1.16.1
版本; -
解压所下载文件到指定的盘符(注:本课程解压后的路径为:D:\nginx-1.16.1),nginx 目录结构如下:
-
启动服务器,步骤:
-
打开 dos 命令窗口,切换到 nginx 的目录下。
-
输入启动命令:start nginx
(注: nginx 的常用命令还有:
停止服务器:nginx.exe -s stop;
启动不成功检查命令:nginx.exe -t )
-
打开浏览器输入网址:http://localhost:80(80 端口可以省略),可见如下图所示信息:
看到上面界面,说明 nginx 服务器已启动成功!
4、nginx 运行原理
Nginx 由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置
文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个指令,用于 URL 匹配),而在
这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx 的模块从结构上分为核心模块、基础模块和第三方模块: -
核心模块:HTTP 模块、EVENT 模块和 MAIL 模块
-
基础模块:HTTP Access 模块、HTTP FastCGI 模块、HHTP Proxy 模块和 HTTP Rewrite 模块
-
第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HttpAccess Key 模块
打开 nginx 目录下的 conf 目录下的 nginx.conf,具体的关键配置如下:
服务器地址和端口配置,如下:
server {
listen 80; #端口号(注:80 端口经常会被其他程序占用,所以在启动服务器之前建议大
家换个端口号,如:8086)
server_name localhost;#服务器地址,localhost 表示本机地址相当于 127.0.0.1
...
}
静态资源配置,如下:
server{
...
location / {
root html; #nginx 目录下的 html 目录,可修改
index index.html index.htm; #访问的默认资源文件,可修改
}
...
}
二、nginx 代理
1、正向代理
- 正向代理:是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理发送
一个请求并指定目标(目标服务器),然后代理向目标服务器转交请求并将获得的内容返回给客户端。客户端必须
要进行一些特别的设置才能使用正向代理。
2、反向代理
- 反向代理:在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请
求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务
器ᨀ供相同的服务,对于用户来说,根本感觉不到任何差别。实际上是通过反向代理服务器接受客户端的请求,
然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果返回给代理服务器,由代理服务器反馈给 客户端。
3、nginx 负载均衡
当一台服务器在单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器中。如此一来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
4、nginx 动静分离
1、什么是动静分离 - 动静分离:将项目中的 css、js、html、jpg 等静态资源和 jsp、ftl 等动态资源分开处理的一种方式。
2、动静分离优点 - 不同的文件由不同的服务器来处理可以使系统架构更为清晰,维护更加方便;
- 高服务器响应速度从而增强了用户体验。