beginer's nginx guid

初学者指南

  • 开启, 关闭和重启配置
  • 配置文件的结构
  • 提供静态内容
  • 设置简单的代理服务器

这个指南提供了基础的nginx介绍, 以及做一些简单的任务. 在开始之前请确保你的电脑已经安装了nginx, 如果没有, 请看installing nginx的笔记.
nginx有一个主进程和多个工作进程. 主进程主要是读取和检查配置和维护工作进程. 而真正处理请求的是工作进程. nginx使用事件驱动的模型和基于系统机制高效地分发请求在工作进程之间. 工作进程的数量( worker_processes )可以在配置文件中定义, 否则nginx将自动调整为可用的cpu核心数量.
nginx和其模块工作的方式都定义在配置文件中, 配置文件默认被命名为nginx.conf以及被放置在 /usr/local/nginx/conf , /etc/nginx , 或者 /usr/local/etc/nginx .

开启, 关闭和重启配置

运行nginx可执行文件开启nginx. 一旦nginx开启了, 可以通过带有 -s 的参数来控制它. 使用下面的语法:

nginx -s signal  

signal 可以是下面的一个:

  • stop – 快速关闭
  • quit – 正常关闭
  • reload – 重新加载配置文件
  • reopen – 重新打开日志文件

举个例子, 关闭nginx的时候, 需要等待工作进程处理完当前的请求. 那么可执行下面的命令:

nginx -s quit  

这个命令应该被开启nginx的那个用户去执行

在配置文件中所做的更改将不会被应用, 除非发送重新加载配置文件的命令给nginx, 或者重新开启. 为了冲洗你加载配置文件, 执行:

nginx -s reload  

一旦主进程接收到重新加载配置文件的信号, 它将检查语法是否正确以及尝试应用在其配置中. 如果成功, 主进程将开启新的工作进程, 并发送信息给老的工作进程, 要求它们关闭. 否则, 主进程回滚改变的配置以及继续用老的配置工作. 老的工作进程一旦接收到关闭命令, 将停止接收新的请求连接但是会继续服务当前正在处理的请求直到这些请求处理完. 之后, 老的工作进程就会退出.

这个signal也可以用Unix的工具帮助, 例如kill. 用这种方式需要带上进程ID. nginx主进程的进程ID( nginx.pid )默认在目录 /user/local/nginx/logs 或者 /var/run . 举个例子, 如果主进程ID是1628

kill -s QUIT 1628  

更多的信号内容, 可以看controlling nginx

配置文件的结构

nginx由多个模块组成, 这些模块被在配置文件中的特定指令控制. 这些指令分为简单指令和块指定. 简单指令由名称和参数构成, 而两者之间用空格隔开, 用分号(;)结束. 一个块指令有和简单指令一样的结构, 但是它以一系列额外的说明作为结束, 这个说明被中括号({ })包围. 如果一个块指令在括号内可以有其他指令, 那么它被称为上下文. ( 例如: events, http, server, 和 location ).

在配置文件中, 放置在任意上下文外面的指令被认为是主上下文. eventshttp指令就在主上下文中, 而serverhttp中, locationserver中.

而其他在#后面的内容是注释内容.

提供静态内容

一个重要的web服务器提供文件( 例如图片或者静态html页面 ). 你将可以根据请求直接返回文件, 通过不同的本地目录: /data/www (这个目录可能包含html文件) 以及 /data/images (可能包含图片). 实现这个功能需要编辑配置文件, 在http块中设置一个包含了两个location块的server块.

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

在一些情况下无法按预期顺利完成, 你可以通过access.logerror.log`文件找出原因, 日志文件在目录 /usr/local/nginx/logs 或者 /var/log/nginx .

设置简单的代理服务器

nginx常用的一个功能就是设置为代理服务器, 就是说一个服务器接收请求, 传递请求给被代理的多台服务器, 检索响应并发送给客户端.
我们将配置一个基础的代理服务器, 提供图片请求从本地目录, 以及发送弄个所有其他请求给被代理的服务器. 在这个例子中, 所有服务器都将定义在单个nginx实例中.
首先, 定义一个被代理的服务器:

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

这个简单服务器将监听8080端口( 默认监听80端口 ), 以及映射所有的请求到 /data/up1 路径在本地文件系统. 这个root指令将被使用, 当location块指令提供的请求映射不包含root指令的请求映射的时候.

接着, 在上个配置的基础上, 设置proxy_pass指令, 以及匹配特定类型的图片. 参数是一个正则表达式匹配所有以 .gif , .jpg, 或者 .png .使用正则表达式之前应该使用~.

server {
    location / {
        proxy_pass http://localhost:8080;
    }
    location ~\.(gif|jpg|png)$ {
        root /data/images;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值