Nginx 快速使用手册

Nginx 快速使用手册

Author: Hope Ning

Email: 242741154@qq.com

一、启动、停止和重新加载配置

nginx -s `signal`
  • stop-快速关闭
  • quit-平稳停工
  • reload-重新加载配置文件
  • reopen-重新打开日志文件

二、配置文件结构

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

三、静态内容服务

Web服务器一个重要的任务是提供文件(例如图像或静态HTML页面)。我们可以实现一个示例——根据请求的不同,从不同的本地目录中获取文件:/data/www(其中可能包含HTML文件)和/data/images(包含图像)。这将需要编辑配置文件并设置http块中的server块中的两个location块。

首先,创建/data/www目录并放置一个包含任意文本内容的index.html文件,再创建/data/images目录并放置一些图像。

接下来,打开配置文件。默认的配置文件已经包含了几个server块的示例,不过其中大部分是注释掉的。现在,注释掉所有的块,并创建一个新的server块:

http {
    server {
    }
}

通常,配置文件可能包括多个server块,并按照它们所监听的端口及服务器的名称加以区分。当Nginx决定某个server处理当前请求时,它就根据server块中定义的location指令的参数,测试请求头中指定的URI。

添加以下内容location块到server块:

location / {
    root /data/www;
}

location块指定"/"前缀与来自请求的URI相比较。为了匹配请求,URI将追加到root指令上,即/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/。对于/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尚未启动,则可照常启动;否则需通过执行以下命令,向nginx的主进程发送reload信号:

nginx -s reload

如果某些事情不像预期的那样工作,可以尝试在access.logerror.log目录中的文件/usr/local/nginx/logs/var/log/nginx里找出其中的原因。

四、设置简单的代理服务器

Nginx的一个常用用法是将其设置为代理服务器——服务器接收请求,然后将其传递给代理服务器,继而从代理服务器得到响应,返回给客户端。

接下来,我们将配置一个基本的代理服务器,它使用本地目录中的文件为图像请求提供服务,其他所有请求则发送到代理服务器。在本例中,两个服务器都将在单个nginx实例上定义。

首先,通过再添加一个server块到nginx的配置文件中,作为代理服务器。其中包含以下内容:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

这将是一个简单的服务器,它侦听端口8080(之前,listen指令使用默认的标准端口80),并将所有请求映射到本地文件系统上的/data/up1目录。创建该目录并在里面添加index.html文件。注意,root指令放在server块内——当location没有指定自己的root命令时,使用该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,或.png。正则表达式应以~。相应的请求将映射到/data/images目录。

当nginx选择location块来服务请求,它首先检查各个location指令的前缀,记住location使用最长的前缀,然后检查正则表达式。如果与正则表达式匹配,nginx将选取该location,否则,它会选择先前记忆中的那个。

代理服务器的最终配置如下所示:

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

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

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

若要应用新配置,请像前几节所述一样,向nginx发送reload信号。

更多可用于进一步配置代理连接的指令。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值