请教关于网站根目录的Location匹配问题

来源:5-4 Nginx常见问题_多个location匹配的优先级2

ch3rish

2018-01-20

服务器上文件目录如下

root@xxx:/var/www/html# tree
.
├── admin
├── home
└── weixin

home下是网站主页的项目

admin 是管理平台,通过www.domain.cn/admin/访问
weixin 是微信方面的,通过www.domain.cn/weixin/访问

nginx配置是

server {
        listen 80;
        server_name domain.cn;
        root /var/www/html/;
        index index.html;

  location /weixin/ {
        try_files $uri /weixin/index.html;
   }

  location /admin/ {
        root /var/www/html/;
        index index.html;
   }

  location / {
        root /var/www/html/home/;
        index index.html;
   }

但是这样感觉不够优雅,因为如果要添加新的项目,有一个就要单独设置一个location
我希望是能把home的那条location单独拎出来,其他的项目,因为是静态文件,走server的root位置,而不需要另外单独配置location,这样如果要添加新的项目,只需要放到/var/www/html/目录下即可。

server {
        listen 80;
        server_name domain.cn;
        root /var/www/html/;
        index index.html;

  location /weixin/ {
        try_files $uri /weixin/index.html;
   }



  location / {
        root /var/www/html/home/;
        index index.html;
   }

但是这样会导致访问www.domain.cn/admin/ 404

我想应该是

location /

这里匹配的问题,该怎么匹配根目录呢 谢谢

写回答

1回答

Jeson

2018-01-21

很好的问题描述,我觉得导致你404的原因是因为在配置location /下root路径为/var/www/html/home,所以/admin的路径请求在/var/www/html/home/admin是找不到的。因为admin的目录仍然放在了/var/www/html这一级下。


0
4
ch3rish
回复
Jeson
好的,谢谢老师,因为每个项目对应单独的repo,git环境也会错乱,所以我还是用现在的方案吧:单独配置,一个项目一个location。
2018-01-24
共4条回复

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程