龙空技术网

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

mikechen 974

前言:

此时小伙伴们对“nginx如何”大体比较讲究,看官们都想要学习一些“nginx如何”的相关知识。那么小编在网上搜集了一些关于“nginx如何””的相关资讯,希望姐妹们能喜欢,看官们快快来学习一下吧!

大家好,我是mikechen。

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.正向代理

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

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

来看个示意图:

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

2.反向代理

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

来看个示意图:

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

3.负载均衡

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

来个示意图:

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

4.动静分离

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

来个示意图:

Nginx使用

1.Nginx官网下载

Nginx下载地址:

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 ;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

以上

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

标签: #nginx如何