理解nginx中root和index配置

说明

最近在搭建WordPress,也就是使用NGINX代理PHP程序。对NGINX是怎样代理到php的很模糊,所以看了下文档

以下内容来自文档。


NGINX中root和index

root表示根目录,并以此查询文件。root可以在server{}和location{}块中,如果root定义在server{}中,它将应用到这个server{}块中所有不包含root指令的location{}块中。

server {
    root /www/data;

    location / {
    }

    location /images/ {
    }

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


上面,如果请求url以/images/开头,那么将在/www/data/images/目录中查找文件。

如果请求url以.mp3.mp4结尾,那么将在/www/media/目录中查找文件。


如果请求的url以/结尾,NGINX将尝试查找目录中的index文件。index定义index的文件名(默认index.html)。

如果请求的url是/images/some/path/,NGINX将会查找文件/www/data/images/some/path/index.html,存在则返回,不存在返回404。


为了返回index文件,NGINX会检查它的存在性,然后作内部重定向(添加index文件名到请求url)。新的请求会重新匹配location{}块。

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

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


上面例子中,如果请求/path/,会首先检查/data/path/index.html是否存在,不存在则检查/data/path/index.php是否存在。存在则进行内部重定向/path/index.php,它匹配第二个location{},将会发送到PHP代理程序。


重点是重定向的url地址(/path/index.php,理解了这个,PHP的代理地址就能理解了。


 

展开阅读全文