在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这篇教程简单介绍了 nginx 并且讲解了一些 nginx 可以解决的简单任务。这里,我们假设 nginx 已经安装在读者的机器上。如果没有,可以看一下如何安装 nginx。这篇教程主要讲解的是如何启用和停止nginx,和重新加载配置,描述配置文件的基本结构和怎样搭建一个 nginx 静态辅助器,怎样配置 nginx 作为一个代理服务器来。 nginx 有一个主进程和其他子进程。主进程的主要工作是加载和执行配置文件,并且驻留子进程。子进程用来作为实际的请求处理。nginx 采取基于事件的模型和 OS 依赖的机制,在多个子进程之间高效的分配请求。子进程的个数会直接写在配置文件中并且,对于给定的配置可以是固定的,或者根据可用的 CPU 核数自动的进行调整(参考 子进程)。 nginx 和它模块的工作方式是在配置文件中写好的。默认情况下,这个配置文件通常命名为 nginx.conf 并且会放置在 启用,停止和重载配置 运行可执行文件就可以开启 nginx,比如: // -c 为 nginx 的配置文件 nginx -c /usr/local/nginx/conf/nginx.conf 如果,nginx 已经开启,那么它就可以通过使用 -s 参数的可执行命令控制。使用下列格式: nginx -s signal signal 可以为下列命令之一:
比如,等待当前子进程处理完正在执行的请求后,结束 nginx 进程,可以使用下列命令: nginx -s quit 执行该命令的用户需要和启动的 nginx 的用户一致。 如果重载配置文件的命令没有传递给 nginx 或者 nginx 没有重启,那么配置文件的改动是不会被使用的。重载配置文件的命令可以使用: nginx -s reload 一旦主进程接收到重载配置文件的命令后,它会先检查配置文件语法的合法性,如果没有错误,则会重新加载配置文件。如果成功,则主进程会重新创建一个子进程并且发送关闭请求给以前的子进程。如果没有成功,主进程会回滚改动并且继续使用以前的配置。老的子进程在接受关闭的命令后,会停止接受新的请求并且继续处理当前的请求,直到处理完毕。之后,该子进程就直接退出了。 在 Unix 工具的帮助下,比如使用 kill 工具,该信号会被发送给 nginx 进程。在这种情况下,信号会被直接发送给带有进程 ID 的进程。nginx 的主进程的进程 ID 是写死在 nginx.pid 文件中的。该文件通常放在 /usr/local/nginx/logs 或者 /var/run 目录下。比如,如果主进程的 ID 是 1628,为了发送 QUIT 信号来使 nginx 优雅退出,可以执行: kill -s QUIT 1628 为了得到所有正在运行的 nginx 进程,我们可能会使用到 ps 工具,比如,像下列的方式: $ ps -ax | grep nginx // 结果为:(下面是单核 CPU 的情况) 516 pts/0 D+ 0:00 grep --color=auto nginx 1156 ? S 1:22 nginx: worker process 27999 ? Ss 0:00 nginx: master process ./nginx 更多关于发送信号给 nginx,可以参考nginx 控制。 配置文件结构 nginx 是由一些模块组成,我们一般在配置文件中使用一些具体的指令来控制它们。指令被分为简单指令和块级命令。一个简单的指令是由名字和参数组成,中间用空格分开,并以分号结尾。例如: // 简单指令 root /data/www; 块级指令和简单指令一样有着类似的结构,但是末尾不是分号而是用 { 和 } 大括号包裹的额外指令集。如果一个块级指令的大括号里有其他指令,则它被叫做一个上下文(比如:events,http,server,和 location)。 在配置文件中,没有放在任何上下文中的指令都是处在主上下文中。 以 # 开头的行,会被当做注释。 # this is a comment events { worker_connections 4096; ## Default: 1024 } http { server { listen 80; server_name domain1.com www.domain1.com; access_log logs/domain1.access.log main; root html; location ~ \.php$ { fastcgi_pass 127.0.0.1:1025; } } } 静态服务器 一个重要的网络服务器的任务是处理文件(比如图片或者静态 HTML 文件)。这里,你会实践一个例子,文件会从不同的目录中映射(取决于请求): 首先,创建一个 下一步,打开配置文件。默认的配置文件已经包含了一些关于 http { server { } } 通常,该配置文件可能会包含多个 将下列 location 指令添加到 server 指令中: location / { root /data/www; } 该 接着,添加第二个 location /images/ { root /data; } 它会匹配到以 server 块级命令的配置结果如下: server { location / { root /data/www; } location /images/ { root /data; } } 这已经是一个可用的服务器配置,它监听标准的 80 端口并且可以在本地上通过 为了使用新的配置文件,如果还没开启 nginx 需要先开启,然后将重载信号发送给 nginx 的主进程,通过执行: nginx -s reload 如果你发现有些地方出了问题,你可以在 搭建一个简易的代理服务 nginx 常常用来作为代理服务器,这代表着服务器接收请求,然后将它们传递给被代理服务器,得到请求的响应,再将它们发送给客户端。 我们将配置一个基本的代理服务器,它会处理本地图片文件的请求并返回其他的请求给被代理的服务器。在这个例子中,两个服务器都会定义在一个 nginx 实例中。 首先,通过在 nginx 配置文件中添加另一个 server { listen 8080; root /data/up1; location / { } } 上面就是一个简单的服务器,它监听在 8080 端口(之前, 接着,使用前面章节中的 server { location / { proxy_pass http://localhost:8080; } location /images/ { root /data; } } 我们将修改第二个 location ~ \.(gif|jpg|png)$ { root /data/images; } 该参数是一个正则表达式,它会匹配所有以 当 nginx 在选择 最终,一个代理服务器的配置结果如下: server { location / { proxy_pass http://localhost:8080/; } location ~ \.(gif|jpg|png)$ { root /data/images; } } 该服务器会选择以 为了使用新的配置,像前几个章节描述的一样,需要向 nginx 发送重载信号。 这还有很多其他的指令,可以用于进一步配置代理连接。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论