nginx新手指南:启动,停止,并重新配置,nginx作为代理服务器,如何用FastCGI应用程序连接

本指南给出的Nginx基本介绍和描述了一些简单的任务,如果Nginx是否已经正常安装好可以查看本文。如果不是,请查看安装nginx教程。本指南介绍了如何启动和停止nginx的,并重新加载配置,说明该配置文件的结构,并描述如何设置nginx静态内容,如何配置nginx作为代理服务器,以及如何用FastCGI应用程序连接。

Nginx有一个主进程和多个工作进程。主进程的主要目的是阅读并评估配置,并保持工作进程。工做实际加工过程请求。Nginx采用基于事件的模型和操作系统依赖性机制有效分配请求在工作进程。工作进程的数量是在配置文件中定义的可
固定为一个给定的配置或自动调整到可用的CPU核心数量(见worker_processes)。

Nginx的配置文件。默认情况下,配置
文件名为nginx.conf置于目录/usr/local/nginx/conf, /etc/nginx, or
/usr/local/etc/nginx.

启动,停止,并重新配置
要启动,运行可执行文件。一旦Nginx的开始,它可以通过调用
可执行的S参数。使用以下语法:

nginx -s 信号

其中信号可以是下列之一:

快速关掉
stop — fast shutdown

优雅关掉
quit — graceful shutdown

重新载入配置文件
reload — reloading the configuration file

重新打开日志文件
reopen — reopening the log files

例如,停止等待辅助nginx过程完成的现任
请求,下面的命令可以执行:

nginx -s quit

这个命令应该是相同的用户开始nginx下执行。
在配置文件中所做的更改将不会应用到命令重新加载配置
发送到nginx或是重新开始。重新加载配置,执行:
nginx -s reload

一旦主进程接收到信号加载配置,它的语法正确性检查
新的配置文件并试图将提供它的配置。如果这是一个成功的,
主进程开始新的工作进程并将消息发送到旧的工作进程,要求他们
关闭。否则,主进程回滚的变化,继续与旧的工作
配置。老工作进程,接收关闭命令,停止接受新的连接,
继续使用当前请求直到所有这样的请求。在那之后,老工作进程
关闭。

一个信号可以同时发送到nginx进程与UNIX工具如杀了实用的帮助。在这
防止信号直接发送到一个给定的进程ID的进程ID的nginx的主进程
过程写的是,默认情况下,对nginx.pid在目录 /usr/local/nginx/logs or /var/run
例如,如果主进程ID是1628,将退出导致Nginx的优美的信号
关机,执行:

kill -s QUIT 1628

PS工具可以查看所有的nginx进程,例如,在
下面的方法:

ps -ax | grep nginx
配置文件的结构

Nginx的模块组成,通过在配置文件中指定的指令控制。
指令分为简单指令和块指令。一个简单的指令组成的
名称和参数的空间和以分号分隔(;)。一块指令相同
结构作为一个简单的指令,但不是最后一套额外的分号
大括号包围的指令({和})。如果一个块的指令可以有其他指令内支撑,
它被称为一个上下文(例如:事件,HTTP,服务器,和位置)。

放置在任何语境之外的配置文件指令被认为是主要的
语境。事件和HTTP指令驻留在主背景,在HTTP服务器,和位置
服务器。

#标志是注释掉这行。

Serving Static Content

一个重要的Web服务器的任务是提供文件(如图像或静态HTML页)。你会
实施例,根据要求,文件将是从不同的地方
目录:/数据/ WWW(其中可能包含HTML文件)/数据/图像(含图片)。这将
需要编辑配置文件和设置里面的HTTP服务器块两块
定位块。

First, create the /data/www directory and put an index.html file with any text content into it and create the /data/images directory and place some images in it.

Next, open the configuration file. The default configuration file already includes several examples of the server block, mostly commented out. For now comment out all such blocks and start a new server block:

http {
server {
}
}
一般来说,配置文件可能包含多个服务器的端口块区分他们
听和服务器名称。一旦Nginx决定服务器处理一个请求的URI,它测试
在请求的头靠里面的位置定义指令指定的参数
服务器模块。
添加下面的位置块服务器块:

location / {
root /data/www;
}
该定位块指定“/”前缀与URI请求。匹配
请求的URI,将被添加到根指令,就是指定的路径,/数据/ WWW,到
形成路径所要求的文件在本地文件系统。如果有多个匹配位置
块nginx的选择具有最长前缀。上面的定位块提供了最短
前缀的长度,所以,只有所有其他的定位块不能提供一个匹配,这一块将
使用。

下一步,添加第二定位块:

location /images/ {
root /data;
}
这将是一个请求开始/images/ (location / 也符合这样的要求,但
较短的前缀)。
所配置的服务器块看起来应该像这样:

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

location /images/ {
root /data;
}
}

这已经是一个工作配置的服务器,侦听端口80访问标准
在HTTP本地机器:/ /本地/。响应与URI开始/图像/请求的,
服务器将文件从/数据/图像目录。例如,在应对
HTTP:/ /本地/图像/实例请求nginx会送/数据/图像/实例文件。如果这样的
文件不存在,Nginx会发送一个响应提示404错误。与URI不启动请求
/图像/将被映射到/数据/ WWW目录。例如,在应对
HTTP:/ /本地/一些/ example.html请求nginx会送/数据/ WWW /一些/ example.html文件。
应用新的配置,启动nginx如果它尚未开始或重新加载信号发送
nginx的主进程,通过执行:

nginx -s reload

在某种情况下没有象预期的那样工作,你可以试着找出原因和access.log
在目录error.log文件 /usr/local/nginx/logs or /var/log/nginx.

建立一个简单的代理服务器

One of the frequent uses of nginx is setting it up as a proxy server, which means a server that receives requests, passes them to the proxied servers, retrieves responses from them, and sends them to the clients.

我们将配置一个基本的代理服务器,它可以从本地文件图像的要求
目录将所有其他请求到代理服务器。在这个例子中,服务器将被定义
在一个单一的nginx实例。
首先,通过添加一个或多个服务器块nginx的配置文件定义的代理服务器
以下内容:

server {
listen 8080;
root /data/up1;

location / {
}
}
这是一个简单的服务器,侦听端口8080(以前,听指令尚未
指定由于标准端口80使用)和地图的所有请求的/数据/时间目录上
本地文件系统。创建这个目录,把index.html文件到它。注意根指令
放置在服务器环境。这些根指令时使用定位块选择服务
一个请求,不包括自己的根指令。

接下来,利用上一节的服务器配置和修改它,使它成为一个代理服务器
配置。在第一位置的块,把proxy_pass指令的协议,名称和端口
在参数指定的代理服务器(在我们的例子中,它是http://localhost:8080 ):
server {
location / {
proxy_pass http://localhost:8080;
}

location /images/ {
root /data;
}
}
我们将修改第二定位块,目前地图请求与/图像/前缀的
/数据/图像目录下的文件,使其与典型的文件图像的匹配请求
扩展。改进的定位块看起来像这样:

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
参数是一个正则表达式匹配所有URI的结局。GIF,JPG,PNG或。。定期
表达应该在~。相应的请求将被映射到/数据/图像
目录。

当选择一个定位块nginx服务请求,它首先检查位置指示,指定
前缀,记住位置的最长前缀,然后检查正则表达式。如果有一个
一个正则表达式匹配,Nginx挑选这个位置,否则选以前的。

The resulting configuration of a proxy server will look like this:

server {
location / {
proxy_pass http://localhost:8080/;
}

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
此服务器将过滤请求结束。GIF,JPG,PNG或。。并将它们映射到/数据/图像
目录(通过添加URI根指令的参数)和通过所有其他请求代理
服务器的配置。

应用新的配置,将加载信号Nginx作为在前面的章节中描述。
还有更多的指令,可进一步配置代理服务器连接。

FastCGI的代理设置

nginx可用于路由请求FastCGI服务器运行了各种应用
框架和编程语言如PHP。
最基本的nginx配置用FastCGI服务器工作包括使用fastcgi_pass指令
取而代之的是proxy_pass指令,指令集和fastcgi_param通过FastCGI参数
服务器。假定FastCGI服务器可在本地:9000。以代理配置
前一部分为基础,取代proxy_pass与fastcgi_pass指令和指令
改变参数,本地: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;
}
}
这将建立一个服务器,将所有请求路由,除了静态图像的要求
代理服务器运行在本地:9000通过FastCGI协议。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*