nginx 提供静态内容

This section describes how to serve static content, how to use different ways of setting up the paths to look for files, and how to set up index files.

这一章讨如何提供静态文件,如何使用不同方式设置查找文件的路径,如果设置索引文件。

Root Directory and Index Files根目录和索引文件

The rootdirective specifies the root directory which will be used to search for a file. To obtain the path of a requested file, NGINX adds the request URI added to the path specified in  root . The directive can be placed on any level within the  http ,  server , or  location contexts. In the example below, the  root directive is defined for a virtual server. It will be applied to all locations where the root is not redefined:

root 指令指定查找文件的根目录。要获取请求的文件的路径,Nginx把请求URI加到指定的root后面。这个指令可以在http,server或者 location环境任何一层里设置。下面这个例子,root指令定义给一个虚拟主机。所有没有重定义root的location都将使用这个值:

server {
  root /www/data;

  location / {
  }

  location /images/ {
  }

  location ~ \.(mp3|mp4) {
    root /www/media;
  }
}

Here, the /images/some/path URI will be mapped to  /www/data/images/some/path on the file system, and NGINX will try to get a file there. A request with a URI such as /any/path/file.mp3 will be mapped to  /www/media/any/path/file.mp3 because the corresponding location defines its own root.

这里,URI”/images/some/path”会被映射到文件系统中的"/www/data/images/some/path”,然后 Nginx会试着在这个路径获取文件。而带着URI”/any/path/file.mp3”的请求会被映射到”/www/media/any/path /file.mp3”因为相应的location定义了自己的根。

If a request ends with a slash, NGINX will treat it as a request for a directory and will try to find an index file there. The name of the index file is specified in the indexdirective, the default value is index.html. In the example above, to the request with the URI /images/some/path/ NGINX will respond with /www/data/images/some/path/index.html if that file exists. If this file does not exist, a 404 error will be returned by default. It is possible, however, to return an automatically generated directory listing when the index file does not exist by setting the  autoindexdirective to  on .

如果请求以斜杠结束,Nginx当它请求一个目录,将在这个目录下找索引文件。索引文件的文件名在 index指令中指定,缺省值为index.html。在上例中,对于请求URI"/images/some/path"Nginx将响应"/www/data /images/some/path/index.html”如果这个文件存在的话。如果这个文件不存在,默认会返回一个404文件。然而,把autoindex指令设为on的话,如果索引文件不存在的话,也可能返回一个自动生成的目录列表。

location /images/ {
    autoindex on;
}

The index directive can list more than one file name. Each file will be checked in the order listed, and the first file that exists will be returned.

index指令可以列出不止一个文件名。每个文件按顺序查找,返回第一个被找到的文件。

location / {
    index index.$geo.html index.htm index.html;
}

The $geo variable here is a custom variable set through the  geodirective. The value of the variable depends on the client’s IP address.

$geo变量在这里是一个自定义变量,通 geo指令设置。变量值取决于客户端IP地址。

To return the index file, NGINX checks its existence and then makes an internal redirect to the URI obtained from the index file name and the base URI. The internal redirect results in a new search of a location and can end up in another location as in the following example:

要返回索引文件,Nginx检索他是否存在然后根据请求的URI和索引文件名得到的URI做一个内部重定向。内部重定向能跳到一个新的location进行查找,可以在另一个location里找到结果,例如下面这个例子:

location / {
  root /data;
  index index.html index.php;
}

location ~ \.php {
  fastcgi_pass localhost:8000;
  ...
}

Here, if a request has the /path/ URI, and it turns out that  /data/path/index.html does not exist, but  /data/path/index.php does, the internal redirect to  /path/index.php will be mapped to the second location. As a result, the request will be proxied.

此间,如果一个请求URI为”/path/“,导致”/data/path/index.html”文件是不存在的,但是”/data /path/index.php”存在,对”/path/index.php”的内部重定向映射到第二个location,结果,这个请求就被代理了。

Trying Several Options使用多个选项

The try_filesdirective can be used to check whether the specified file or directory exists and make an internal redirect, or return a specific status code if they don’t. For example, to check the existence of a file corresponding to the request URI, use the  try_files directive and the $uri variable as follows:

try_files 指令用来检查指定的文件或者目录是否存在,如果不存在做一个内部重定向,或者返回一个指定的状态码。例如,使用try_files指令和$uri变量,根据相应的请求URI来检查文件是否存在,见下例:

server {
    root /www/data;

    location /images/ {
        try_files $uri /images/default.gif;
    }
}

The file is specified in the form of the URI, which is processed using the root or  alias directives set in the context of the current location or virtual server. In this case, if the file corresponding to the original URI doesn’t exist NGINX makes an internal redirect to the URI specified in the last parameter returning  /www/data/images/default.gif .

The last parameter can also be a status code (specified after =) or the name of a location. In the following example, a 404 error is returned if none of the options resolves into an existing file or directory.

文件在URI组件中指定,URI由设置在当前location或者虚拟主机的上下文环境中的root或alias指令处理。这样,如果原生 URI对应的文件不存在,Nginx用最后一个参数做URI做一次内部重定向,返回”/www/data/images/default.gif”。最后 一个参数也可以是一个状态码(用=指定)或者一个location的名字。下面这个例子中,如果所有选项都不能找到存在的文件或目录,返回一个404错 误。

location / {
    try_files $uri $uri/ $uri.html =404;
}

In the next example if neither the original URI, nor the URI with the appended trailing slash, resolve into an existing file or directory, the request is redirected to the named location which passes it to a proxied server.

下面这个示例,如果附加尾部斜线的原始URI和URI,都没有解析到一个存在的文件或者目录,请求被重定义到一个命名过的location,这个location把请求发送到一个代理服务器

location / {
    try_files $uri $uri/ @backend;
}

location @backend {
    proxy_pass http://backend.example.com;
}
时间: 2024-11-05 14:48:23

nginx 提供静态内容的相关文章

[Linux] Nginx 提供静态内容和优化积压队列

1.try_files指令可用于检查指定的文件或目录是否存在; NGINX会进行内部重定向,如果没有,则返回指定的状态代码.例如,要检查对应于请求URI的文件是否存在,请使用try_files指令和$ uri变量,如下所示: server { root /www/data; location /images/ { try_files $uri /images/default.gif; } } 2.对NGINX配置进行微小优化可以提高生产力并帮助实现最佳性能.启用sendfile默认情况下,NGI

nginx学习之提供静态内容(五)

1.根目录和索引文件 server { root /www/data; location / { } location /images/ { } location ~ \.(mp3|mp4) { root /www/media; } } root指令能放置的位置是:http,server,location. 上面的意思是:我所有的location定义都是基于根目录/www/data的,也就是说"/"指的就是/www/data/,而"/images/"指的就是/www

Nginx作为静态内容服务器(Windows环境)

1.简单安装 1)下载 http://nginx.org/en/download.html 2)解压后的路径 E:\Study\nginx\nginx-1.7.6 3)执行nginx.exe,访问http://localhost ,出现Welcome to nginx!欢迎内容,安装成功. 4)在安装路径的logs目录下,会自动生成一个nginx.pid文件,文件内容就是nginx的主进程pid. 2.简单使用命令 nginx -s stop 快速停止 nginx -s quit 安全退出(会处

nginx学习(七):nginx提供静态资源服务

准备工作 这里准备了一个文件夹,里面放入了一个img文件夹和index.html文件,将文件上传到home下. 配置nginx 这里我们从新起个端口 server { listen 90; server_name localhost; location / { root /home/static_kevin; index index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }

Django提供静态文件服务

Django为了方便开发调试,debug模式下runserver会利用django.contrib.staticfiles应用自动部署资源服务,但是生产模式下(或Debug=True时),如果还想要Django提供资源服务,就必须明确提供资源相关的配置,使其承担资源服务.以下是两种使用Django提供资源服务的配置方式,推荐使用这一种,发布生产环境后,可以使用nginx提供静态资源服务,Django只做动态内容服务. 第一种形式:1.项目设置中配置(settings.py) STATIC_ROO

nginx中文手册内容说明

1.什么是nginx? Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎.能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型. 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代

自己搭建CDN服务器静态内容加速-LuManager CDN使用教程

为什么要自己来搭建一个CDN服务器实现网站访问加速?一是免费CDN服务稳定性和加速效果都不怎么行:二是用国内的付费CDN服务价格贵得要死,一般的草根站长无法承受:三是最现实的问题国内的CDN要求域名Be案. 有了Be案的域名自然是选择国内的主机,没有Be案的域名都是使用的美国主机,国内访问美国空间的速度有时会不理想,且始终比不上国内机房的访问速度,相对于美国空间,日本.香港等地的机房在国内访问速度非常快. 于是很多人都喜欢将自己的网站放在日本或者香港机房,就连CDN服务,我们都会希望找到有日本或

Nginx提供代理服务(网站代理),nginx实现负载均衡集群和高可用集群、nginx实现网站动静页面分离

静态页面:用静态编程语言编写的页面为静态页面,支持静态页面的语言为,css html  xml,不手动改变源代码,页面就不会改变. 动态页面:用动态编程语言编写的页面为动态页面,支持动态页面的语言有,java php .net,根据用户访问的时间和用户的不同显示不同的页面. nginx网站服务代理 实验(一)实验目的:nginx实现反向代理代替公网用户访问私网的web页面. 实验环境: 内网web服务器: IP地址 :192.168.1.1  主机名:fanlj nginx代理服务器:IP地址:

Keepalived+Nginx提供前端负载均衡+主从双机热备+自动切换

原文链接:http://unun.in/linux/156.html 方案: 采用两台Nginx服务器作为前端,提供静态web内容,分发web请求,一主一从,Keepalived实现状态监测,保证 Nginx正常对外提供服务,即主Nginx服务进程死掉之后,keepalived能够通过脚本或者程序检测机制,将网站的访问切换到从Nginx上 来.后端的web应用服务器的监控由Nginx负责,keepalived只监控Nginx的健康状况. 性能:大约是硬件负载均衡器的10% 优势:虽然性能远弱于L