nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

nginx的root和alias都是用来指定映射服务器静态资源文件的命令,例如访问的html文件或者图片文件等都可以通过这样命令配置访问。但使用方法虽然相似,但容易混淆,特别是root命令的使用方式,经常会被大家误解,下面就来介绍下如何使用和区分

工具/原料

  • linux

  • nginx

方法/步骤

  1. 1

    连接linux服务器,然后在已有安装的nginx目录下面,创建一个static目录用来演示测试,然后创建一个a.html文件,echo "This is a nginx root test page." > static/a.html

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  2. vi conf/nginx.conf进入nginx配置文件进行编辑,添加一段配置

    location /test {

             root /usr/bin/nginx1.10.0/static;

    }

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  3. 重启nginx,命令:

    ./sbin/nginx -s reload

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  4. 接着在浏览器上输入对应的地址进行访问测试,发现404访问不了,host+/test/a.html找不到文件

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  5. 出现问题了,查看nginx日志文件,可以快速的帮助我们定位到问题,错误日志在logs/error.log,查看日志发现,找到文件目录是,/usr/bin/nginx1.10.0/static/test/a.html,我们创建的a.html是在static下面的,到static的test目录下找,肯定找不到

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  6. 在static下面创建test目录,再把a.html文件移动到test目录下面

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  7. 再次使用浏览器访问测试,这个时候就可以正常显示了,说明nginx的root配置把我们的test匹配添加到文件目录中进行读取文件了

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  8. 下面再来看下alias的使用,同样创建一个b.html

     echo "This is a nginx alias test page." > static/b.html

    注意是static目录下面,不是test目录下面

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  9. 然后修改nginx配置文件,

    location /test {

                    alias /usr/bin/nginx1.10.0/static;

            }

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  10. 打开浏览器测试访问,这个时候正常显示了b.html内容了

    nginx如何使用root和alias以及区别(nginx作为静态资源服务器,比如:作为web项目前端资源服务器)

  11. 总结:

    对比以上root和alias的使用方式可以发现:

    location /test {

             root /usr/bin/nginx1.10.0/static;

    }

    访问地址为:host/test/a.html-->文件目录:/usr/bin/nginx1.10.0/static/test/a.html

    location /test {

             alias /usr/bin/nginx1.10.0/static;

     }

    访问地址为:host/test/b.html-->文件目录:/usr/bin/nginx1.10.0/static/b.html

    说明root把匹配的字符/test拼接到了文件路径中,而alias没有