nginx初学者指南

原文:http://nginx.org/en/docs/beginners_guide.html

nginx安装请百度或查看官网:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/

本文介绍如何启动停止nginx,加载它的配置,解释配置文件结构,并介绍如何去搭建一个提供静态内容的nginx服务器,以及怎样配置 nginx 作为一个代理服务器。

控制运行的NGINX进程

NGINX 启动后,有一个主进程(master process)和一个或多个工作进程(worker process),主进程的作用主要是读入和检查NGINX的配置信息,以及维护工作进程;工作进程才是真正处理客户端请求的进程。工作进程个数由nginx.conf配置文件中的worker_processes指令定义,可以设置为固定数字,也可以根据CPU核数自动调整。nginx.conf配置文件一般在/etc/nginx目录。

可以通过以下这些命令来控制 NGINX:

nginx -s [ stop | quit | reopen | reload ]

其中:

  • nginx -s stop: 强制停止NGINX,不管工作进程当前是否正在处理用户请求,都会立即退出。
  • nginx -s quit:“优雅地”退出NGINX,工作进程会将当前正在处理的请求处理完毕后,再退出。
  • nginx -s reload:重载配置信息,而无需重新启动nginx。
  • nginx -s reopen:重新打开日志文件。

配置文件结构

nginx由许多模块(modules)组成,这些模块由配置文件中的指令(directives)控制,指令分为简单指令和块指令(block directives)。

简单指令举例:

user    nobody;
error_log    logs/error.log notice;
worker_processes    1;

块指令举例:

http {
    # Configuration specific to HTTP and affecting all virtual servers  
    server {
        # configuration of HTTP virtual server 1       
        location /one {
            # configuration for processing URIs starting with '/one'
        }
        location /two {
            # configuration for processing URIs starting with '/two'
        }
    } 
}

server块指令定义了一个虚拟服务器去处理请求,其中的location指令定义了如何处理指定的URI。

如果块指令中包含其他指令,这个块指令称为上下文(context)。一般只在最外层的块指令称为顶级块指令,顶级块指令处于main上下文中。顶级块指令包含4种:

  • events – 处理一般连接
  • http – 处理HTTP 流量
  • mail – 处理邮件流量
  • stream – 处理TCP 和 UDP 流量

提供静态内容

Web服务器的一个重要任务是提供文件(例如图像或静态HTML页面)。

接下来我们实现一个例子:从本地目录/data/www提供HTML文件(例如目录中存放一个index.html,请求URI中不包含具体文件时默认提供index.html文件),并从本地目录/data/images提供图像文件。

修改nginx配置文件,新增一个http块指令:

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

通常,http上下文中可以包括多个server块,监听不同的端口和服务器名。 一旦 nginx 决定哪个server处理请求,它会根据在 server 块级指令中定义好的 location 指令的参数,来匹配请求 URI。

上述配置已经是服务器的配置,它监听默认端口80,并可以在本地计算机访问http://localhost/

上述例子中的location块指定了请求URI地址的前缀(//images/),如果存在多个匹配的前缀,选择策略是最长匹配。对于请求URI匹配到了某前缀,就将这个请求URI拼接到root指令中指定的路径后,以形成本地文件系统上所请求文件的路径。例如对于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的一个常见用途是将其设置为代理服务器,代理服务器转发客户端请求给被代理的服务器。

我们将配置一个基本代理服务器,它使用来自本地目录的文件处理图像请求,并将所有其他请求发送到被代理的服务器。

首先配置一个被代理的服务器。

server {
    listen 8080;
    root /data/up1;
    location / {
    }
}

这将是一个监听端口8080的简单服务器(未指定listen指令默认监听80端口)并将所有请求映射到本地文件系统上的/data/up1目录。 请注意,这时的root指令放在sever上下文中,当location块不包括自己的root指令时,使用该root指令。

接下来,配置一个代理服务器。

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

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

第一个location指令中的proxy_pass指令定义被代理的服务器。
第二个location指令的参数是一个正则表达式,以~开头。匹配以.gif.jpg.png结尾的所有URI。相应的请求将映射到/data/images目录。

当nginx选择一个location块来处理请求时,它首先检查指定前缀的location指令,记住具有最长前缀的location,然后按顺序检查正则表达式,如果有正则表达式匹配,则nginx选择此location,否则选择之前记住的那个location。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值