Nginx生手指南

2020-01-26 作者:计算机知识   |   浏览(98)

Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器。 Nginx

Nginx新手指南

1.1 简介

这个指导对nginx的基础功能做了简单的说名。现在nginx也应该已经在读者机器上安装了,如果还没有,那么看看安装页面。这个指导将会讲到如何启动,停止nginx和重载它的配置文件,解释了配置文件的结构,如何设置nginx服务静态内容,如何配置nginx作为代理服务器,如何连接一个FastCGI应用。

nginx有一个master主进程和几个worker进程。master进程的目的是为了读取和评估配置文件,和维护worker进程。Woker进程是实际处理请求的。nginx使用了基于事件的模型和依赖OS(OS-dependent)的机制来高效的分发请求到woker 进程中,worker进程的数量可以在配置文件中定义,可以使用固定的数量或自动的调整为可用的CPU核数(see worker_processes)。

nginx和它的模块工作方式取决于配置文件。默认这个配置文件名称为nginx.conf,位于/usr/local/nginx/conf或/usr/local/etc/nginx目录下面。

1.2 启动,停止,和重载配置文件

一般使用ngixn的可执行文件启动nginx,nginx的可执行文件有如下用法。

nginx -s signal

信号可以是下面中的其中之一

·  stop — fast shutdown

·  quit — graceful shutdown

·  reload — reloading the configuration file

·  reopen — reopening the log files

在配置文件中的改变不会立即生效,除非你重载配置文件或者重启nginx,想要重载配置,执行。

nginx -s reload

一旦主进程收到了重载配置文件的信号,它首先检查语法是否有错,然后试着应用配置文件。如果成功了,主进程启动新的worker进程同时,向老的worker进程发消息请求他们关闭。否则的话,主进程仍然回滚到改变之前继续工作在旧的配置文件之下。老的worker进程,在收到关闭命令之后,停止接受新的请求,但是继续处理当前的请求知道所有的请求都处理完毕。然后老的worker进程退出。

1.3 配置文件的结构

nginx由模块组成,而模块通过在配置文件中指定指令来控制。指令分为简单的指令和块指令,简单额指令由名字和参数通过空格分开,以分号”;”结尾。块指令作为简单指令也有同样的结果,但是不再使用分号结尾,而是花括号{}。块指令包含其它指令在花括号内部,它叫做上下文(context),例如events,http,server,和location。

指令放置在任何上下文之外,都被看做主上下文(main context)。events和http指令放在主上下文里面,server放在http里面,location放在server里面。

每一行在#后面的标示为注释

1.4 提供静态内容

web服务器的一个重要任务就是服务文件,(例如图片,或静态HTML页面)。你会在哪里实施例子,依赖于请求,文件不同的本地目录提供服务,/data/www(包含HTML页面)和/data/images(包含图片)。这只需要在位于http中的server块里面编辑两个location块即可。

首先,创建一个/data/www 目录然后放一个静态文件,文件包含一些文本信息。然后创建/data/iamges目录,存放一些图片。

下一步,打开配置文件默认的配置文件以及包含了几个server块的例子,不过大部分被注释掉了。现在注释掉所有的server块,然后开始一个新的server块。

http {

    server {

    }

}

通常来说,这个配置文件可以包含几个server块,通过监听的端口和服务器名称来区分。一旦nginx决定哪个server加工请求,它会测试请求中指定的URI和定义在server块里面的location指令块的参数

添加下面的location块到server块里面。

location / {

    root /data/www;

}

这个location块,指定了/前缀对比请求的URI。对于匹配的请求,URI会添加到指定的root指令的路径后面,这里是/data/www。如果多个location块被匹配到,nginx挑选最长的前缀那个。上面的location块提供了最短的前缀,因此,仅仅当所有其他的location块没被匹配的时候,这个块才会被使用。

现在添加第二个location块

location /images/ {

    root /data;

}

这会匹配以/images/开始的请求(/也会匹配,只不过是短前缀)

server块的配置结果就像这样。

server {

    location / {

        root /data/www;

    }

    location /images/ {

        root /data;

    }

}

这已经是一个可以正常监听在80端口的配置文件,通过本地机器   ,ngixn会发送/data/www/some/example.html 文件。

在有时,不像自己预期的那样工作,你可以试着在access.log或error.log中找到原因,它们位于/sur/local/nginx/logs或者/var/log/nginx 目录下面。

1.5 配置一个简单的代理服务器

nginx的一个常用方式是作为代理服务器,意味着服务接受到的请求,把请求传递到代理服务器,然后从代理服务器取回响应,然后在发送给客户端。

我们会配置一个基础的代理服务器,本地服务器服务图片请求,其它的请求发送给代理服务器,在这里例子中,两个服务器都会定义为简单的nginx实例。

首先,在配置文件中,通过添加一个或多个server块定义多个代理服务器。

server {

    listen 8080;

    root /data/up1;

    location / {

    }

}

这是一个简单的工作监听在8080端口的服务器,映射所有的请求到/data/up1本地文件系统目录下面,创建这个目录然后放index.html文件到里面,记住root指令放在server上下文里面(context)。当location块里面没有放root指令的时候,这个指令会生效。

下面使用前面定义的配置文件,修改它让它作为代理服务器,在第一个location块里面,放置proxy_pass指令,然后指定参数。我们这里使用  。

server {

    location / {

        proxy_pass ;

    }

    location /images/ {

        root /data;

    }

}

我们会修改第二个location块,当前映射的是/images/前缀到/data/images目录下面,现在为了匹配典型的图片,修改locatio块就像下面这样。

location ~ .(gif|jpg|png)$ {

    root /data/images;

}

这参数是正则表达式匹配以.gif,.jpg,或.png结尾的文件。正则表达式应该以 ~开头。匹配的请求会映射到/data/images目录下面。

当nginx选择一个location块服务请求的时候,它首先检查指定前缀的location指令,然后检查正则表达式。

代理服务器的配置结果就像下面这样。

server {

    location / {

        proxy_pass ;

    }

    location ~ .(gif|jpg|png)$ {

        root /data/images;

    }

}

这个服务器会过滤所有以.gif或.jpg或png结尾的文件,映射他们到/data/images目录下面。然后传递所有的请求到代理服务器那里。

还有更多的指令用于更深入的配置代理连接

1.6 配置一个FastCGI代理

nginx可以用于路由请求到FastCGI服务器.最基本的ngxin配置,可以使用fastcgi_pass使fastcgi服务和nginx服务器协同工作,而不是使用proxy_pass指令,fastcgi_param指令设置传递到FastCGI服务器的参数。在PHP中,SCRIPT_FILENAME参数用于决定脚本名,QUERY_STRING参数用于设置传递请求参数。

配置结果如下

server {

    location / {

        fastcgi_pass  localhost:9000;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param QUERY_STRING    $query_string;

    }

    location ~ .(gif|jpg|png)$ {

        root /data/images;

    }

}

This will set up a server that will route all requests except for requests for static images to the proxied server operating on localhost:9000 through the FastCGI protocol.

这会设置一个服务器,路由所有的除了images的request请求到代理服务器,运行在localhost:9000通过FastCGI协议。

CentOS 6.2实战部署Nginx+MySQL+PHP

使用Nginx搭建WEB服务器

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

CentOS 6.3下Nginx性能调优

CentOS 6.3下配置Nginx加载ngx_pagespeed模块

CentOS 6.4安装配置Nginx+Pcre+php-fpm

Nginx安装配置使用详细笔记

Nginx日志过滤 使用ngx_log_if不记录特定日志

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:

1.1 简介 这个指导对nginx的基础功能做了简单的说名。现在nginx也应该已经在读者机器上安装了,如果还没有,那么看看安装页...

以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。很多高知名度的网站都使用

Nginx,如:Netflix,GitHub,SoundCloud,MaxCDN 等。

图片 1

Nginx 有一个主线程( master process)和几个工作线程(worker process)。主线程的目的是加载验证配置文件、维护工作线程。

工作线程处理实际的请求,Nginx 采用基于事件的模型和依赖操作系统的机制在工作线程之间高效地分发请求。工作线程的数量可配置,也可自动调整为服务器CPU的数量。

Nginx 及其模块的工作方式由配置文件确定。 默认情况下,配置文件名为nginx.conf,放在/usr/local/nginx/conf、/etc/nginx或者/usr/local/etc/nginx文件夹中。

基本命令

Nginx 启动之后,可以使用以下命令控制:

nginx -s

其中-s意思是向主进程发送信号,signal可以为以下四个中的一个:

stop— 快速关闭

quit— 优雅关闭

reload— 重新加载配置文件

reopen— 重新打开日志文件

当运行nginx -s quit时,Nginx 会等待工作进程处理完成当前请求,然后将其关闭。当你修改配置文件后,并不会立即生效,而是等待重启或者收到nginx -s reload信号。

当 Nginx 收到nginx -s reload信号后,首先检查配置文件的语法。语法正确后,主线程会开启新的工作线程并向旧的工作线程发送关闭信号,如果语法不正确,则主线程回滚变化并继续使用旧的配置。当工作进程收到主进程的关闭信号后,会在处理完当前请求之后退出。

配置文件

Nginx 配置的核心是定义要处理的URL以及如何响应这些URL请求,即定义一系列的虚拟服务器(Virtual Servers)控制对来自特定域名或者 IP 的请求的处理。

每一个虚拟服务器定义一系列的location控制处理特定的 URI 集合。每一个location定义了对映射到自己的请求的处理场景,可以返回一个文件或者代理此请求。

Nginx 由不同的模块组成,这些模块由配置文件中指定的指令控制。 指令分为简单指令块指令

一个简单指令包含指令名称指令参数,以空格分隔,以分号结尾。 块指令与简单指令类似,但是由大括号包围。 如果块指令大括号中包含其他指令,则称该指令为上下文(如:events,http,server和location)。

配置文件中的放在上下文之外的指令默认放在主配置文件中(类似继承主配置文件)。events和http放置在主配置文件中,server放置在http块指令中,location放置在server块指令中。

配置文件的注释以#开始。

静态内容

Web 服务器一个重要的功能是服务静态文件(图像或静态HTML页面)。例如,Nginx 可以很方便的让服务器从/data/www获取 html 文件,从/data/images获取图片来返回给客户端,这只需要在http块指令中的server块指令中设置两个location块指令。

首先,创建/data/www目录,并放入index.html,创建/data/images目录并在其中放置一些图片。

接下来,打开配置文件。 创建一个server块:

http { server {

}

}

通常,配置文件可以包括多个server块,它们以端口服务器名称来区分。当 Nginx 决定某一个server处理请求后,它将请求头中的URI和server块中的location块进行对比。

加入location块指令到server中:

将以下位置块添加到服务器块:

location / { root /data/www;

}

上面的location块指定/前缀与请求中的URI对比。对于匹配的请求,URI将被添加到root指令中指定的路径,即/data/www,以此形成本地文件系统的路径,如访问 如果URI匹配多个location块,Nginx 采用最长前缀匹配原则(类似计算机网络里面的IP匹配), 上面的location块前缀长度为 1,因此只有当所有其他location块匹配时,才使用该块。

接下来,添加第二个位置块:

location /images/ { root /data;

}

它将匹配以/images/(/也匹配这样的请求,但具有较短的前缀)开始的请求。

server块的最终配置如下:

server { location / { root /data/www;

本文由大发体育发布于计算机知识,转载请注明出处:Nginx生手指南

关键词:

  • 上一篇:没有了
  • 下一篇:没有了