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] 举报,一经查实,本站将立刻删除。