nginx使用说明新手指南

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx使用说明新手指南相关的知识,希望对你有一定的参考价值。

本节介绍如何启动和停止nginx,重新加载配置,配置文件的结构,如何配置nginx分配静态内容,如何配置nginx为代理服务器,如何与FastCGI程序相联。

Nginx包含一个主进程和多个工作进程。主进程读取并处理配置,维护工作进程。工作进程负责实际的请求处理。Nginx使用事件驱动和操作系统相关的机制,可以有效的在工作进程间分配请求。工作进程的数量可以在配置文件里设定,可以配置为固定的个数,也可以根据CPU的核心数进行动态适应。

默认情况下,配置文件为nginx.conf,一般路径为/usr/local/nginx/conf/etc/nginx, 或/usr/local/etc/nginx。像上一节我们设置的安装路径,配置文件放在/usr/local/nginx/conf。

启动,停止nginx,更新配置

运行可执行文件启动nginx,如

[[email protected] nginx]# /usr/local/nginx/sbin/nginx

启动后,可以用如下命令操作nginx

nginx -s signal

signal可以是如下命令

stop:快速停止

quit:安全退出

reload:重新加载配置文件

reopen:打开日志文件

 

如果要等nginx工作进程处理完当前的所有请求后才停止,应该使用如下命令:

nginx –s quit

 

配置文件修改后,需要重新加载或重启nginx才会起作用,重新加载配置执行如下命令:

nginx –s reload

 

主进程接收到重新加载配置的命令后,先检查新配置的语法是否有效,并尝试应用新的配置。如果新配置应用成功,主进程启动新的工作进程,并发送消息通知旧的进程停止工作。如果新配置应用失败,则回滚所有更改,并继续使用旧的配置,旧的进程放弃新的配置,继续使用旧的进程处理当前请求。

也可以通过Unix的命令工具直接发送信号给nginx的进程ID,如kill命令。Nginx的主进程ID默认配置在/usr/local/nginx/logs或/var/run目录下的nginx.pid文件中。假设主进程ID是1628,要使用QUIT命令让nginx安全退出,执行如下命令:

kill –s quit 1628

       使用ps命令获取nginx所有运行的进行

    ps -ax | grep nginx

配置文件结构

nginx的各模块由配置文件中的指令集控制。指令集分为简单指令和块指令,简单指令由名称和参数组成,中间以空格分格,以分号(;)结束,块指令的结构和简单指令相同,但以大括号包围的附加指令集结束。块指令的大括号里可以包含其它指令,称作上下文(例如:events,http,server和location)。

放置在所有上下文以外的指令都被认为是在主上下文中。主上下文包含events和http指令,http包含server,server包含location。

注释每行使用#开头。

静态文件

Web服务器的一个重要作用就是分配静态文件(如图片和html文件)。可以实现一个示例,根据请求从不同的目录分配文件:/data/www和/data/images。修改配置文件,在http块中设置一个server块,在server块包含两个locaton块。

首先,创建/data/www目录,添加html.index文件,内容自己定义,再创建/data/images目录,放几张图片。

接着打开配置文件,默认已经包含一些已注释的示例。先不管注释的内容,新添加一个server块,

http{

      server{

}

}

配置文件可以包含多个server块,通过监听端口(listen)和服务名称(server_name)区分,通过请求消息头中的URI匹配server中loation的参数来确定哪个server块处理请求。

在server块中添加如下指令:

location /{

      root /data/www

}

location块定义”/”前缀与请求的URI作比较,匹配的请求URI会被添加到root指令定义的路径之后,也就是/data/www,组成请求文件的本地路径。如果有多个location块匹配,nginx选择其中前缀最长的一个。上边的locatoin块使用了长度最短的前缀,所以如果其它location无法匹配,都会使用这个location块。

添加第二个location块:

location /images/{

      root /data;

}

匹配以/images/开头的所有请求。

配置文件server的最终内容如下:

server{

      location /{

       root /data/www;

}

location /images/{

       root /data;

}

}

配置监听80端口,并且可以通过http://localhost/访问。URIs以/images/开头的请求,服务器从/data/images发送文件,例如对应请求http://localhost/images/example.png,nginx会发送文件/data/images/example.png,如果文件不存在,nginx发送一个404的响应异常。不以/images/开头的请求会映射到/data/www目录。例如请求http://localhost/some/example.html会发送文件/data/www/some/example.html

重启nginx或发送reload命令以使新配置生效:

nginx –s reload

如果出现异常,可以在access.log和error.log中查找原因,它的目录是/usr/local/nginx/logs或/var/logs/nginx

 

配置简单的代理服务

Nginx经常用作代理服务器。代理服务器接收请求,把它们传递到被代理服务器,获取响应,并返回到客户端。

我们将要配置一个代理服务器,从本地目录处理图片文件的请求,其它请求发送到被代理服务器处理。在本例中,两个服务器都被定义在同一个nginx实例中。

首先,定义被代理服务器,在配置文件中再添加一个server块,内容如下:

server{

      listen 8080;

      root /data/up1;

      location /{

}

}

这个服务配置监听80端口,映射所有请求到/data/up1目录。这里的root指令放在server上下文中,当location指令中没有root指令时,可以像这样配置root指令。

然后,修改上一节的配置为代理服务器的配置。在第一个location块配置代理服务器的协议,名称,端口设置proxy_pass的参数值:

server{

      location /{

       proxy_pass http://localhost:8080;

}

location /images/{

       root /data;

}

}

修改第二个location块,让它只匹配特定扩展名的图片。

location ~\.(gif|jpg|png)${

      root /data/images;

}

参数是一个正则表达式,匹配所有以.gif,.jpg或.png结尾的URIs,正则表达式必须以~开始,与该配置匹配的请求会被映射到/data/images目录。

nginx处理请求时,首先检查location指令定义的最长前缀,与正则表达式比较,如果匹配,nginx使用这个location,否则使用其它指令定义。

代理服务器的最终配置如下:

server{

      location /{

       proxy_pass http://localhost:8080//;

}

location ~\.(gif|jpg|png)${

       root /data/images;

}

}

服务器会过滤以.gif,.jpg或.png结尾的请求,把它们映射到/data/images目录,传递其它请求到代理服务器。

 

设置FastCGI代理

Nginx可以将请求路由到各种框架和语言开发的FastCGI应用服务器,如php

最基本的,将proxy_pass指令改为fastcgi_pass指令,用fastcgi_param设置传到FastCGI服务器的参数。假设FastCGI服务器的访问地址是localhost:9000,用上一节的代理服务器的配置,把proxy_pass改为fastcgi_pass,更新参数值为localhost:9000。在PHP中,SCRIPT_FILENAME参数用来过确定脚本名称,QUERY_STRING用来传递请求参数,最终配置文件如下:

server{

      location /{

       fastcgi_pass localhost:9000;

              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

              fastcgi_param QUERY_STRING $query_string;

}

location ~\.(gif|jpg|png)$   {

       root /data/images;

}

}

 

通过该配置,除了静态文件,所有请求都通过FastCGI协议被路由到代理服务器上localhost:9000。

以上是关于nginx使用说明新手指南的主要内容,如果未能解决你的问题,请参考以下文章

Mac新手使用指南:brew安装的nginx常用命令

Nginx的启动停止等命令

nginx启动命令和停止命令

linux nginx配置

Windows下Nginx的启动停止等命令

Windows下Nginx的启动停止等命令