学习nginx----初学者指南(带官方nginx启动脚本地址)

本指南描述如何启动和停止nginx,并重新加载其配置,说明配置文件的结构,并介绍如何设置nginx以提供静态内容,如何将nginx配置为代理服务器,以及如何将nginx配置为代理服务器一个FastCGI应用程序。

nginx有一个主进程和几个工作进程。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程会处理请求的实际处理。nginx使用基于事件的模型和依赖于操作系统的机制来高效地在工作进程间分配请求。工作进程的数量在配置文件中定义,并且可以针对给定配置进行修复或自动调整为可用CPU核心的数量。

nginx及其模块的工作方式在配置文件中确定。默认情况下,该配置文件被命名nginx.conf ,并放入目录 /usr/local/nginx/conf, /etc/nginx或 /usr/local/etc/nginx。

1.启动,停止和重新加载配置

nginx -s 信号
当信号可以是下列之一:

stop - 快速关机
quit - 优雅的关机
reload - 重新加载配置文件
reopen - 重新打开日志文件

2.配置文件的结构

nginx包含由配置文件中指定的指令控制的模块。指令分为简单指令和块指令。一个简单的指令由名称和参数组成,由空格分隔并以分号(;)结束。块指令与简单指令具有相同的结构,但不是以分号结尾,而是以一系列由大括号({和})包围的附加指令结束。如果block指令可以在大括号内包含其他指令,则它被称为上下文(例如: events , http, 服务器的位置)。

放置在任何上下文之外的配置文件中的指令被认为是在 主要上下文中。在events和http指令驻留在main上下文server 中http,并location在 server。
#sign 后面的其余部分被认为是评论。

3.提供静态内容

一个重要的Web服务器任务是提供文件(如图像或静态HTML页面)。您将实施一个示例,根据请求,文件将从不同的本地目录/data/www (可能包含HTML文件)和/data/images (包含图像)提供。这将需要编辑配置文件并 在 两个位置 块的http块中设置一个 服务器块
首先,创建/data/www目录,并将index.html包含任何文本内容的 文件放入其中,并创建/data/images目录并放置一些图像。
接下来,打开配置文件。默认的配置文件已经包含了几个server块的例子,大部分都是注释掉的。现在注释掉所有这些块并开始一个新 server块:

http {
    server {
    }
}

通常,配置文件可能包含几个 由它们侦听的端口和 服务器名称区分的server块 。一旦nginx决定哪个进程处理请求,它就会根据块内定义的指令 的参数来测试请求头中指定的URI 。 serverlocationserver

将以下location块添加到 server块中:

location / {
    root /data/www;
}

该location块指定/与来自请求的URI相比较的前缀“ ”。对于匹配请求,URI将被添加到根 指令中指定的路径 ,即为了/data/www在本地文件系统上形成请求文件的路径。如果有几个匹配location块,nginx会选择最长前缀的块。location上面的块提供了最短的前缀,长度为1,所以只有当所有其他location 块未能提供匹配时,才会使用此块。

接下来,添加第二个location块:

location / {
    root /data/www;
}

该location块指定/与来自请求的URI相比较的前缀“ ”。对于匹配请求,URI将被添加到根 指令中指定的路径 ,即为了/data/www在本地文件系统上形成请求文件的路径。如果有几个匹配location块,nginx会选择最长前缀的块。location上面的块提供了最短的前缀,长度为1,所以只有当所有其他location 块未能提供匹配时,才会使用此块。

接下来,添加第二个location块:

location /images/ {
    root /data;
}

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

server块 的结果配置应该如下所示:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

这已经是一个服务器的工作配置,它监听标准端口80,并且可以在本地机器上访问 http://localhost/。为了响应以URI开头的请求/images/,服务器将从/data/images目录发送文件。例如,响应 http://localhost/images/example.png请求,nginx将发送/data/images/example.png文件。如果这样的文件不存在,nginx将发送一个指示404错误的响应。具有不是以URI开头的请求/images/将被映射到该/data/www目录。例如,响应 http://localhost/some/example.html请求,nginx将发送/data/www/some/example.html文件。
要应用新的配置,请启动nginx,如果它尚未启动或发送reload信号到nginx的主进程,执行:

nginx -s reload

在一些情况下不按预期工作,您可以尝试找出原因access.log和 error.log目录中的文件 /usr/local/nginx/logs或 /var/log/nginx。

4.设置简单的代理服务器

nginx的一个常用用途是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从中检索响应并将它们发送给客户端。

我们将配置一个基本的代理服务器,该服务器为来自本地目录的文件的图像请求提供服务,并将所有其他请求发送给代理服务器。在这个例子中,两个服务器将在单个nginx实例上定义。

首先,通过向server nginx的配置文件添加一个更多的块并使用以下内容定义代理服务器:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

这将是一个简单的服务器,用于侦听端口8080(以前,listen自从使用标准端口80以来,该指令未被指定)并将所有请求映射到/data/up1本地文件系统上的目录。创建该目录并将其index.html放入其中。请注意,该root指令放置在 server上下文中。这样root,当用于指令 location选择用于服务请求中不包含自己的块root指令。

接下来,使用上一节中的服务器配置并对其进行修改,使其成为代理服务器配置。在第一个location块中,将 proxy_pass 指令与参数中指定的代理服务器的协议,名称和端口(在我们的例子中是这样http://localhost:8080):

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

我们将修改第二个location 块,它将当前带有/images/ 前缀的请求映射到目录下的/data/images文件,以使其与具有典型文件扩展名的图像的请求匹配。修改的location块如下所示:

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}

该参数是一个正则表达式,匹配以.gif。.jpg,或者结尾的所有URI .png。正则表达式应该在前面~。相应的请求将被映射到该/data/images 目录。

当nginx选择一个location块来为请求提供服务时,它首先检查 指定前缀的位置指令,记住location 最长的前缀,然后检查正则表达式。如果与正则表达式匹配,nginx会选择此选项 location,否则,会选择之前记住的选项。

代理服务器的结果配置如下所示:

server {
    location / {
        proxy_pass http://localhost:8080/;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

该服务器将过滤以.gif,, .jpg或者结尾的请求.png 并将它们映射到/data/images目录(通过向root指令的参数添加URI )并将所有其他请求传递给上面配置的代理服务器。

要应用新配置,请reload按照前面部分所述将信号发送到nginx。

5.设置FastCGI代理

nginx可用于将请求路由到运行由各种框架和编程语言(如PHP)构建的应用程序的FastCGI服务器。

与FastCGI服务器配合使用的最基本的nginx配置包括使用 fastcgi_pass 指令而不是proxy_pass指令,以及fastcgi_param 指令来设置传递给FastCGI服务器的参数。假设FastCGI服务器可以访问localhost:9000。以上一节中的代理配置为基础,将proxy_pass指令替换为指令 fastcgi_pass并将参数更改为 localhost:9000。在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;
    }
}

这将建立一个服务器,将除了静态图像请求之外的所有请求路由到localhost:9000通过FastCGI协议运行的代理服务器 。

翻译地址:https://nginx.org/en/docs/beginners_guide.html

nginx启动脚本地址:https://www.nginx.com/resources/wiki/start/topics/examples/initscripts/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值