我正在尝试设置通配符静态域。我的服务器托管了几个域,所以我宁愿为所有域配置一个配置,而不必手动添加每个域。到目前为止我有这个...
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 /;有什么想法吗?
答案 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;
}
}