Nginx - 通配符静态域

时间:2013-11-03 14:20:33

标签: php caching nginx static

我正在尝试设置通配符静态域。我的服务器托管了几个域,所以我宁愿为所有域配置一个配置,而不必手动添加每个域。到目前为止我有这个...

server {
    server_name static.* www.static.*;

    root /var/web/$host/;

    access_log off;
    error_log off;

    location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
            add_header        Cache-Control public;
            add_header        Cache-Control must-revalidate;
            expires           7d;
    }
    location  / {
            deny all;
    }

}

所有文件都以该格式存储在/var/web/example.com/中,包括子域名/var/web/subdomain.example.com /

这个域是静态内容(只有images / css / js等),我希望root与普通站点相同,只是它只允许静态文件(因此为什么php fpm不在这里)

没有任何nginx错误,但我得到了404,我感觉它与root / var / web / $ host /;有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我试试

root /var/web/$http_host/;

我也尝试使用固定域名(比如www.static.whatever.com)来查看我是否可以访问至少一个静态文件。然后我会继续为这个问题增加更多的自由度。

另外,我会投入

listen 80;

只是为了确保。

答案 1 :(得分:0)

在谷歌上搜索一段时间引导我:http://nginx.org/en/docs/http/server_names.html

我发现我可以在server_name中执行正则表达式。所以这对我有用:

server {
    listen 80;
    server_name ~^static\.(?<domain>.+)$;

    root /var/web/$domain/;

    access_log off;
    error_log off;

    location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
            add_header        Cache-Control public;
            add_header        Cache-Control must-revalidate;
            expires           7d;
    }
    location  / {
            deny all;
    }

}