nginx必备知识
一:Nginx 概述
1、Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器。Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。
2、Nginx特点:占有内存少,并发能力强
二:Nginx常用的命令和配置文件
1、Nginx常用的命令
作用 | 命令 |
---|---|
启动命令 | 在安装目录(例如:/usr/local/nginx/sbin 目录)下执./nginx |
关闭命令 | 在安装目录(例如:/usr/local/nginx/sbin 目录)下执./nginx -s stop |
重新加载命令 | 在安装目录(例如:/usr/local/nginx/sbin 目录)下执. ./nginx -s reload |
2、nginx.conf 配置文件
nginx 安装目录下,其默认的配置文件都放在这个目录的 conf 目录下,而主配置文件 nginx.conf 也在其中。对 nginx 的使用基本上都是对此配置文件进行相应的修改。
配置文件中有很多#, 开头的表示注释内容。
(1)第一部分:全局块
内容如下:
(2)第二部分:events 块
内容如下:
(3)第三部分:http 块
注意:这是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
内容如下:
此外http 块也可以包括 http 全局块、server 块。
①、http 全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
②、server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。
1、全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
2、location 块:一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
三:基本概念
1、正向代理
正向代理:局域网外的 Internet 是一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
原理如图所示:
2、反向代理
对于反向代理来说,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
原理如图所示:
3、负载均衡
当单个服务器解决不了,我们就增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
原理如图所示:
4、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
原理如图所示:
四:我对Nginx 总结
至少要做到:
1、了解Nginx是什么。
2、熟悉nginx的基本命令。
3、熟悉正向代理,反向代理,负载均衡,动静分离等基本概念及原理。
4、熟悉nginx配置,并学会配置反向代理,负载均衡,动静分离等。
楠哥-------一心想为IT行业添砖加瓦,却总是面向cv编程的程序员。
谢谢阅读,无误点赞,有误还望评论区指正。