Nginx里的root/index/alias/proxy_pass的意思

1.【alias】

别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:(注意alias配置最后一定要有/,而root可以没有)

location /test/ 
{ 
alias /home/sftp/img/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会返回文件/home/sftp/img/1.jpg。

2.【root】

根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【root】配置的路径,并把location配置路径附加到其后。如:

location /test/ 
{ 
root /home/sftp/img/;
}

即:请求/test/1.jpg(省略了协议与域名),将会返回文件/home/sftp/img/test/1.jpg,相较于alias,使用root会把/test/附加到根目录之后。

3.【proxy_pass】

反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/"有关,有"/"则不附加,如:

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)。

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/test/1.jpg(附加/test/路径)。

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080/img; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img1.jpg(未附加/test/路径,但附加了/test/之后的路径)。

 4.【index】,一般有这样的配置:

location / {
  root html;
  index index.html index.htm;
}

注意,这里的root后面没有跟绝对路径,即前面没有/xxx这种写法,所以它指的是nginx根目录下的html;

即假设请求http://localhost/test/uu.html匹配的是这个规则,那么nginx会从根据是root是得知是访问文件系统(而非访问其他网络,可以理解为此时的nginx是正向代理),然后判断html前面没有/或者是如C:这样的用于描述绝对路径的写法,说明这个路径是相对于nginx根目录下的html目录,所以最终是从html里找test目录下的uu.html文件返回;

这里的index是当比如请求http://localhost时默认其实在nginx里是http://localhost/index(但是如果客户端这么写则nginx会认为是找绝对文件index所以会提示找不到),所以这里的index其实就是指示当是index时优先从niginx目录下的html目录里找index.html返回,没有才找index.htm返回;

不过要注意看nginx是否启动了多个,自己之前测试的时候nginx启动了多个导致reload的不是正在工作的,差点还以为这个配置不是这样的;


参考:https://blog.csdn.net/zhangliangzi/article/details/78257593

原文地址:https://www.cnblogs.com/silentdoer/p/11264251.html