nginx的静态服务器

发表时间:2017-07-18 21:29:34 浏览量( 30 ) 留言数( 0 )

学习目标:

1、了解Nginx的基本使用

2、掌握Nginx的静态服务器的搭建


学习过程:

一、课程说明    

    虽然前面我们说nginx经常用作反向代理,但是nginx也可以作为http服务器,比如我们平时使用的静态页面的访问,或者作为图片服务器用于图片的浏览等等,nginx这方面的性能非常搞。

    网络服务器的任务是处理文件(比如图片或者静态 HTML 文件)。这里,文件会从不同的目录中映射(取决于请求):/data/www(放置 HTML 文件)和 /data/images(放置图片)。这需要配置一下文件,将带有两个 location 的指令的 server 的块级命令放在 server 指令中。 首先,创建一个 /data/www 目录,然后放置一个事先写好内容的 index.html 文件。接着,创建一个 /data/images 目录,然后放置一些图片。 下一步,打开配置文件。默认的配置文件已经包含了一些关于 server 指令的样式,大多数情况下直接把他们给注释掉。现在,注释掉其他的区块,然后写一个新的 server 区块:

http {    

        server {  

            listen 80;   

        }

}

   默认的端口时80端口,这个可以自己根据需要修改。通常,该配置文件可能会包含多个 server 指令。这些 server 指令监听不同的端口和服务器名。一旦 nginx 决定哪个服务进程处理请求,它会根据在 server 块级指令中定义好的 location 指令的参数,来匹配请求头中指定的 URI。 将下列 location 指令添加到 server 指令中:

location / {    

        root /data/www;

}

该 location 指令相对于请求中的 URI 执行了 “/” 的前缀。为了匹配请求,URI 会被添加到 root 命令指定的路径后,即 /data/www,得到本地文件系统中请求文件的路径。如果,有几个 location 匹配到,那么 nginx 会选择最长的前缀。上面的 location 提供了长度为 1 的前缀,所以,仅当其他的 location 匹配失败后,该指令才会使用。 接着,添加第二个 location 区块:


location /images/ {    

        root /data;

}

它会匹配到以 /images/ 开头的请求(location / 也会匹配到该请求,只是前缀更短) 。

server 块级命令的配置结果如下:

server {   

        location / {       

                root /data/www;   

        }   

        location /images/ {       

                root /data/images;  

                autoindex on; 

        }


}

1)root则是将images映射到/data/images

2)autoindex on便是打开浏览功能。

这样图片的访问路径是:

http://localhost/images/authorwechatsrc/9cca2e07-82d2-416b-b1a8-8a60fd8cab2b.jpg


    这已经是一个可用的服务器配置,它监听标准的 80 端口并且可以在本地上通过 http://localhost/ 访问。对于 URI 以 /images/ 开头的请求,服务器会从 /data/images 目录中,返回对应的文件。例如,nginx 会返回 /data/images/example.png 文件,当接收到 http://localhost/images/example.png 的请求响应时。如果该文件不存在,nginx 会返回一个 404 错误的响应。没有以 /images/ 开头的 URI 的请求,将会直接映射到 /data/www 目录中。比如,响应 http://localhost/some/example.html 的请求,nginx 会发送 /data/www/some/example.html 文件。 


二、使配置生效

修改完整配置后,为了使用新的配置文件,如果还没开启 nginx 需要先开启,然后将重载信号发送给 nginx 的主进程,通过执行:

nginx -s reload

如果你发现有些地方出了问题,你可以在 /usr/local/nginx/logs 或者 /var/log/nginx 目录下的 access.log 和 error.log 文件中,找到原因。