微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何configurationnginx,让一些子域只能访问js / css文件?

我有一个网站(例如:test.com),它有两种子域名:

test.com

静_ $ {}版本.test.com

一个是主子域,第二个仅用于静态文件(js / css / image)。 ${version}是一个版本号,当有新版本的js / css / images文件的时候会改变,我需要它,因为客户端可能会caching旧版本。

现在我使用Nginx,但是我没有test.com域进行configuration,只是简单地将所有子域重写到主test.com域。

它的工作原理,但有一天,我发现了一个search引擎,使用static.test.com作为主要域名访问我的网站。

Nginx – 将domain.com:port重写到sub.domain.com

Nginx – 从redis中读取值并将其存储到variables中

如何将rails应用程序的Nginxconfiguration为子域名?

Apache2 – 麻烦添加子域名

Rails子域路由

如何configurationNginx,让static.test.com只能访问静态文件,而主域可以访问所有的?

UPDATE

我希望static.test.com与js / css / images的请求将重写到test.com ,而不是磁盘上的静态文件。 和其他请求(不是js / css /图像)将直接返回404

感谢Timofey Stolbov的回答 ,我现在写一个configuration:

server { listen 80; server_name ~^static_(.*).test.com$; set $version $1; rewrite ^/public/(.*) http://test.com/public/$1?v=$version last; return 404; }

由于我的js / css / images文件都在“public”目录下,所以我只是检查它是否以“public”开头。 如果没有,只需返回404

但是我不知道这是否正确,特别是return 404 ,还是有更好的办法来做到这一点。

排除redirect中的某些子文件夹和域

dns lookup在离线状态下不能正常工作

Windows 2003上的通配符子域名安装

当子域达到一定的带宽时,如何触发脚本?

Rails 4个子域名不适用于生产

我使用这样的东西。

server { server_name static.test.com; root /var/www/static; location / { rewrite ^/([^/]+.css)$ /css/$1 break; rewrite ^/([^/]+.js)$ /js/$1 break; rewrite ^/([^/]+.(png|jpg|jpeg))$ /images/$1 break; } }

对于第二个问题

是的,你的公司是正确的。 但是你应该使用永久重定向,否则Nginx会用302 Moved Temporarily重定向请求。 另外listen 80认是认的。

我不认为每个js / css /图像使用重定向是好主意,所以三思而后行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐