您的位置:首页 > 运维架构 > Nginx

beginer's nginx guid

2015-11-04 20:01 330 查看

初学者指南

开启, 关闭和重启配置

配置文件的结构

提供静态内容

设置简单的代理服务器

这个指南提供了基础的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
).

在配置文件中, 放置在任意上下文外面的指令被认为是主上下文.
events
http
指令就在主上下文中, 而
server
http
中,
location
server
中.

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

提供静态内容

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

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


在一些情况下无法按预期顺利完成, 你可以通过
access.log
error.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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: