【翻译】nginx入门手册
前言
这个手册手册假设你已经安装了nginx
,如果没有请前往nginx
官网下载安装nginx
,我们将好告诉你如何启动,关闭nginx
,还有更新nginx
的配置文件,像你描述如何使用nginx
代理静态文件,如果配置反向代理.
nginx
启动以后拥有一个master
进程和多个worker
进程,master
进程的主要任务是读取配置文件,解析配置文件,管理worker
进程的生命周期,worker
进程的数量是配置在配置文件中,如果配置的不会,nginx
也尝试让你的配置变得更加合理,它同事会根据cpu的数量上下调整worker
进程的数量.
nginx
的配置文件名字叫做nginx.conf
,默认情况下,nginx
会尝试从/etc/nginx/
或者/usr/local/etc/nginx
中寻找配置文件.
启动,关闭,更新配置
启动nginx
只需要执行nginx
的可执行文件
nginx
一旦启动成功,你就能通过
nginx -s signal
来空置nginx进程,信号使用说明如下
- stop 关闭nginx
- quit 退出nginx
- reload 重新加载配置文件
- reopen 重新打开日志文件 例如,如果你要关闭`nginx`服务,你需要执行下面的命令
nginx -s quit
执行这个命令的用户应该和启动nginx
的用户一致,一般会是www
用户或者root
用户,更新nginx
的配置文件,你需要执行:
nginx -s reload
当master
进程收到了更新配置文件的信号以后,master
进程会立马检查配置文件,并且解析配置文件,如果有语法错误,那么什么也操作,忽视用户的操作,如果配置文件没问题,那么它会解析这个文件,并且发送信号给worker
进程,通知worker
进程退出,master
使用新的配置文件产生新的worker
进程.
也可以使用kill
命令发送信号给master进程,master
进程的pid
一般都会保存在一个nginx.pid
的文件中,这文件一般会在/usr/local/nginx/logs
或者/var/run
,例如master
的pid
是1682,发送QUIT
信号也能关闭nginx
,命令如下:
kill -s QUIT 1628
如果要查询nginx
的pid
可以使用如下命令:
ps ax | grep nginx
# 配置文件的结构
nginx
包含很多的模块,各个模块都能通过配置文件中的指令来控制,可能是一个简单的指令也可能是一个指令集,一条简单的指令包含指令名字,指令参数,最后用 ;
来表示指令结束了。块指令包含多个简单的指令,他用 {
来表示开始,}
来表示结束。使用#
开头的行表示是一行注释,不会影响nginx
的行为。
nginx 代理静态文件
nginx
的一个非常重要的用处是用来最为文件服务器托管文件(类似于图片,静态的HTML页面),这里将会告诉如何搭建一个简单的静态文件服务器。
- 创建
/data/www
目录,放一个index.html
的静态文件再里面 - 创建
/data/images
目录,放入若干的图片 现在,我们需要再配置里面配置http
模块和server
模块。默认的nginx
配置文件已经包含了一些记本的配置信息,下面我们创建一个新的server
http {
server {
}
}
一个nginx
的配合文件里面是可以配置多个server
模块的,他们绑定不同的端口。在nginx
接受到请求以后,首先会检查请求的路径是否满足配置文件中的location
配置。添加如下内容到server
配置中:
location / {
root /data/www;
}
location
设置 /
会拦截所有来自这个端口的请求,匹配路径root
指令所在的文件夹/data/www
中的文件,如果满足,就会使用这个规则,如果不满足就会跳过,现在想server
中再加入一条配置:
location /images {
root /data;
}
这条配置会匹配/images
开头的请求。现在我们的配置我内存大概看起来像这样:
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
这个配置已经可以正常工作了,默认是监听服务的80
端口。通过http://localhost
就能访问,如果要访问图片资源,使用http://localhost/images/example.png
这样路径即可。如果资源找不到,nginx
会相应一个404页面。修改了配置文件,如果要配置生效,不要忘记了执行:
nginx -s relaod
顺便说一句,如果要查看 nginx 的请求日志acceess.log或者错误日志eror.log,需要到文件 /usr/local/nginx/logs或者/var/log/nginx文件中找。
反向代理
另一个非常常用的用法是使用nginx
来当作反向代理服务器。nginx
在收到请求以后会把请求发送给被代理的服务器,将被代理服务器的响应返回给请求方。下面我们将配置一个非常简单的反向代理服务。
server {
listen 8080;
root /data/up1;
location / {
}
}
这是一个文件服务,他监听8080端口,他映射请到文件夹/data/up1
,下面我们简单的修改一下上面的配置,
server {
listen 8080;
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
我们来修改一下location
的配置,让他支持特定后缀名的图片文件。
server {
listen 8080;
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
location
的参数值是要给正则表达式,他过滤了以.gif
,.jpg
,.png
结束的请求,配置文件到/data/images
文件夹.