Nginx配置为干净的网址

时间:2015-01-27 23:23:46

标签: url nginx server assets

我的网站具有以下目录结构:

.
├── assets
├── config
├── html
├── spec
└── vendor

我正在使用它作为运行集成测试的开发设置,我需要一个服务器实例。我需要站点根目录在html中,但我需要能够链接到资产中的资产。到目前为止,这就是我所拥有的,而且它不起作用:

server {
    listen       9001;
    server_name  localhost;
    root /Users/hugo/src/feedback/www;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root /Users/hugo/src/feedback/www;
        index  index.html index.htm;
    }

    location /assets/ {
        root /Users/hugo/src/feedback/assets;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    # ... all the comments in the default config
}

页面正在提供,但找不到任何资产。它在这里看:

http://localhost:9001/assets/bootstrap/dist/css/bootstrap.min.css

更新

您对目录结构的假设是正确的。 我将配置更改为以下结果:

server {
    listen       9001;
    server_name  localhost;
    root /Users/hugo/src/feedback/www/html;
    index  index.html index.htm;

    location / {
    }

    location /assets/ {
        # I also tried using 'root' instead of 'alias' but same results
        alias /Users/hugo/src/feedback/www/assets;
    }
}

3 个答案:

答案 0 :(得分:0)

我看到您已设置root /Users/hugo/src/feedback/www,这对我来说意味着目录结构如下所示:

www
├── assets
├── config
├── html
├── spec
└── vendor

如果这是正确的,那么您可能需要将资产位置块修改为此(添加www):

location /assets/ {
    root /Users/hugo/src/feedback/www/assets;
}

答案 1 :(得分:0)

假设您确实拥有Blake Frederick认为的www设置,那么您可以查看以下内容:

server {
    listen 9001;
    server_name  localhost;
    root /Users/hugo/src/feedback/www/html;
    index  index.html index.htm;

    location / {
        # The root and index directives should typically 
        # not be in locations blocks
        # Minimum really is the server block.
        # Usually even better in http block.
    }
    location /assets/ {
        # What you need here is the alias directive
        alias /Users/hugo/src/feedback/www/assets/;
    }
}

答案 2 :(得分:0)

在玩了一下之后,我尝试了一下它就有效了。

server {
    listen       9001;
    server_name  localhost;
    root /Users/hugo/src/feedback/www/html;
    index  index.html index.htm;

    location /assets/ {
        root /Users/hugo/src/feedback/www;
    }
}

我非常喜欢Dayo的回答,因为在阅读文档之后,在我看来,别名更适合我正在做的事情,但不幸的是它没有用。