位置指令不符合预期

时间:2013-08-03 16:19:41

标签: nginx

我正在尝试将缺少文件扩展名的任何请求定向到我的快速服务器,除了//dashboard,我想转到我的连接服务器。 /dashboard应该从连接服务器请求/dashboard.html。这就是我所拥有的:

server {
    listen 80;
    server_name myserver;

    index index.html;

    location @connect {
        proxy_pass http://localhost:9001;
    }

    location @express {
        proxy_pass http://localhost:9002;
    }

    location ~* \.(html|js|css|png|jpg|jpeg|gif|ico)$ {
        try_files $uri @connect;
        expires 7d;
    }

    location = / {
        try_files $uri @connect;
    }

    location = /dashboard {
        try_files $uri.html @connect;
    }    

    location / {
        try_files $uri @express;
    }
}

/按预期转到连接服务器,但/dashboard转到我的快速服务器。谁能帮我理解我做错了什么?

2 个答案:

答案 0 :(得分:2)

解决方案是替换:

location = /dashboard {
    try_files $uri.html @connect;
}

location = /dashboard {
    proxy_pass http://localhost:9001/dashboard.html;
}

参考:

答案 1 :(得分:0)

我认为问题是因为您使用了location = /dashboard并且我认为这例如不匹配/dashboard/,您是否只想要确切位置匹配?我的意思是为什么不使用location /dashboard/(删除=