Nginx最全详解(万字图文总结)

行业 162 0

大家好,我是mikechen。

Nginx最全详解(万字图文总结)

Nginx是非常重要的负载均衡中间件,被广泛应用于大型网站架构,下面我就全面来详解Nginx@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

Nginx

Nginx是一款轻量级的高性能的Web服务器和反向代理服务器,是由俄罗斯的程序设计师Igor Sysoev所开发。

Nginx 处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

Nginx特点

由于以下这几点,所以使用Nginx非常火,在互联网项目中广泛应用。

相较于 Apache具有占有内存少、稳定性高、并发能力强等优势;Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接;高度的模块化、扩展性好、和自由软件许可证、使得第三方模块层出不穷;Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、Mac OS 等操作系统上。


Nginx功能应用

1.正向代理

正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。

例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。

来看个示意图:

我们可以通过这种方式,访问原来无法访问的资源,比如:Google。

2.反向代理

反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。

来看个示意图:

由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

3.负载均衡

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。

来个示意图:

将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡。

4.动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

来个示意图:


Nginx使用

1.Nginx官网下载

Nginx下载地址:https://nginx.org/en/download.html

2.下载稳定版

如下图所示:

然后再把Nginx的下载包,上传Linux服务器。

3.Nginx命令

Nginx常用命令:

nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。nginx -s reopen 重新打开日志文件。nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。nginx -v 显示 nginx 的版本。

nginx -V 显示 nginx 的版本,编译器版本和配置参数。


4.Nginx目录结构

├── conf # Nginx所有配置文件的目录│ ├── fastcgi.conf # fastcgi相关参数的配置文件│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件│ ├── fastcgi_params # fastcgi的参数文件│ ├── fastcgi_params.default │ ├── koi-utf│ ├── koi-win│ ├── mime.types # 媒体类型│ ├── mime.types.default│ ├── nginx.conf # Nginx主配置文件│ ├── nginx.conf.default│ ├── scgi_params # scgi相关参数文件│ ├── scgi_params.default │ ├── uwsgi_params # uwsgi相关参数文件│ ├── uwsgi_params.default│ └── win-utf├── fastcgi_temp # fastcgi临时数据目录├── html # Nginx默认站点目录│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面│ └── index.html # 默认的首页文件├── logs # Nginx日志目录│ ├── access.log # 访问日志文件│ ├── error.log # 错误日志文件│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件├── proxy_temp # 临时目录├── sbin # Nginx命令目录│ └── nginx # Nginx的启动命令├── scgi_temp # 临时目录└── uwsgi_temp # 临时目录


5.Nginx配置

Nginx配置文件所在位置:nginx/conf/nginx.conf。

Nginx配置结构

main # 全局配置,对全局生效├── events # 配置影响 nginx 服务器或与用户的网络连接├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块│ ├── server│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri│ │ ├── location│ │ └── ...│ └── ...└── ...

Nginx配置含义

全局块main:nginx 的全局配置,对全局生效;events:配置影响 nginx 服务器或与用户的网络连接;http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;location:配置请求的路由,以及各种页面的处理情况;upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

Nginx配置文件

worker_processes 1;# worker进程的数量events { # 事件区块开始 worker_connections 1024;# 每个worker进程支持的最大连接数} # 事件区块结束http { # HTTP区块开始 include mime.types;# Nginx支持的媒体类型库文件 default_type application/octet-stream;# 默认的媒体类型 sendfile on;# 开启高效传输模式 keepalive_timeout 65;# 连接超时 server { # 第一个Server区块开始,表示一个独立的虚拟主机站点 listen 80;# 提供服务的端口,默认80 server_name localhost;# 提供服务的域名主机名 location / { # 第一个location区块开始 root html;# 站点的根目录,相当于Nginx的安装目录 index index.html index.htm;# 默认的首页文件,多个用空格分开 } # 第一个location区块结果 error_page 500502503504 /50x.html;# 出现对应的http状态码时,使用50x.html回应客户 location = /50x.html { # location区块开始,访问50x.html root html;# 指定对应的站点目录为html } }


6.使用示例

events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; #server_name localhost; server_name 192.168.71.167; location / { root html; #添加下面的一句话 proxy_pass http://127.0.0.1:8080; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}

以上

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

标签: ngnix

抱歉,评论功能暂时关闭!