nginx新手指引--文档翻译

官方文档源地址:http://nginx.org/en/docs/beginners_guide.html

目录

开启,停止,重新加载配置

配置文件的结构

提供静态内容

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

建立FastCGI代理

nginx有一个主进程(master process)和很多个工作进程。主进程是读取并评估(evaluate)配置,控制工作进程。工作进程处理请求。nginx是采用基于事件的模型。独立于操作系统的机制,来高效的分发请求。工作进程的数量在配置文件中有定义,它可以根据CPU内核数量自适应。

nginx和其模块的工作方式是由配置文件来决定的。默认情况下配置文件在

/usr/local/nginx/conf,

/etc/nginx,

/usr/local/etc/nginx

以上三个目录中的一个,其文件名默认为nginx.conf

开启,停止,重新加载配置

通过执行可执行文件来开启nginx。可通过 -s 参数调用可执行文件,语法如下:

nginx –s signal

其中signal可为如下命令:

stop:快速关闭

quit:优雅的关闭,

nginx –s quit

会等待工作进程完成当前请求,然后再关闭(该命令应该由开启nginx的用户执行)

reload:重新加载配置文件

nginx –s reload

改变配置文件是不会立即生效的,需要执行reload命令,或者重启nginx

reopen:重新打开日志文件

一旦主进程接收到reload配置的命令,它会做两件事:1,检查新配置文件的语法是否正确有效,2. 应用新的配置。如果以上两步成功,则主进程开启新的工作进程并发送消息给旧工作进程让其关闭。(当工作进程接收到shut down的命令时,它会停止接收新的连接,并将当前所有请求执行完毕,然后退出进程。)如果以上两步报错,则主进程回退原来的改变,继续原配置运行。

结束nginx进程的另一种方式,可借助于Unix工具的kill命令。在这种情况下,结束信号将直接把ngnx进程ID发送给Unix进程处理。nginx的进程ID(nginx.pid)默认情况下在/usr/local/nginx/logs或者/var/run目录下。举个例子,如果主进程ID是1628,那么就执行

kill –s QUIT 1628

使用ps命令可获取所有运行的nginx进程,例如:

ps –ax | grep nginx

配置文件的结构

nginx有许多模块构成,这些模块在配置文件中都有指定的指令控制。这些指令分为简单指令和块指令。详见配置。

提供静态内容

一个重要的WEB服务器功能就是提供文件,例如图片,静态html页面。你可以通过编辑配置文件实现。

举个例子:

1. 你先创建一个文件夹,路径为/data/www,放置一个index.html文件。然后创建一个/data/images路径,然后放一些图片在images文件夹内。

2. 打开配置文件,在默认配置文件的

http {

    server {

    #这里面

    }

}

对location进行修改。

配置文件修改如下:

location / {

            root /data/www;

        }

location /images/ {

            root /data;

        }

3. 执行

nginx –s reload

4. 验证

访问静态页面时:

打开浏览器,输入http://你的公网IP /hello.html ,即可成功访问

访问图片时:

打开浏览器,输入http://你的公网IP /images/2.gif ,即可出现对应图片

访问过程:

其实浏览器中输入的Url, 在nginx中会先取到公网IP,再取到IP后面的路径,然后匹配location中的路径。

怎么匹配呢?

将输入URL的路径与配置文件中location后面的路径匹配。例如我取到输入url 是http://localhost/images/example.png,那么nginx会在路径中匹配到/image/ ,然后在匹配到的路径前加上对应的root值,则实际访问URL为http://localhost /data/images/example.png。

当所有location后面的路径都无法匹配输入URL的路径时,则使用location后面的路径为/的root值。例如,输入URL是http://localhost/some/example.html时,实际访问的路径时http://localhost/data/www/some/example.html

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

这是nginx最频繁使用的一个功能。它起到的作用是:接收请求,转发到对应的原始服务器,获得对应响应,并发送至客户端。

举个例子,配置一个基本的代理服务器,作用是提供一些图片等静态文件并转发请求到服务器

1. 在服务器添加/data/upl路径,并添加index.html页面

2. 配置原始服务器。在nginx配置文件中添加server块指令及其内容。

server {

    listen 8080;

    root /data/upl;

    location / {

    }

}

修改原来的server中的location参数,

location / {

            #root /data/www;

            proxy_pass http://127.0.0.1:8080/;

        }

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

            root /data/images;

            }

3. 保存,并执行

nginx -s reload

4. 验证

浏览器中访问http://公网IP:8080或者http://公网IP:8080/index.html

 

nginx的工作过程:

nginx服务器监听80端口,当请求是图片文件时,则nginx的工作为提供静态资源,其他的请求则转发给服务器的8080端口处理。服务器8080端口,接收转发来的URL并在路径前加上root值,这就是实际访问的URL。然后location中路径的匹配,加上location的root值,等等同之前的一样。

建立FastCGI代理

nginx可以转发请求到FastCGI服务器。FastCGI服务器上面运行着由各种框架和编程语言编写的应用。

和FastCGI搭配的最基本nginx配置:使用fastcgi_pass指令而不是proxy_pass;fastcgi_param指令用来设置传递到FastCGI服务器的参数。

假设FastCGI服务器是监听的本地9000端口。则修改原来的server中的location参数,如下

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;
    }
}

其中,SCRIPT_FILENAME在PHP中用来描述脚本名,QUERY_STRING用来传递请求参数。

修改后,依然执行

nginx –s reload

这样nginx会通过FastCGI协议转发所有非静态图片的请求到9000端口,为所有静态图片的请求提供资源。

猜你喜欢

转载自blog.csdn.net/qq_38723430/article/details/84036536