我使用 nginx 来服务器静态文件。我想要做的是,当有人浏览到
http://foo.bar.com/
他被重定向到
http://bar.com
但是当我访问静态文件本身时,它应该提供该文件,例如:
http://foo.bar.com/blog/main.css
有什么建议吗?
谢谢!
答案1
首先,您需要 2 个服务器块,一个用于 foo.bar,一个用于 bar。
然后,在 foo.bar 服务器块中指定几个位置。
location / {
rewrite ^ http://bar.com
}
location ~ ^/blog/.+\.(jpg|css|png)$ {
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^ http://bar.com
}
Nginx 位置按特异性工作,因此正则表达式位置将在位置之前使用/如果 URI 匹配,我们将检查文件是否存在,如果它确实为其提供服务,否则我们将以任何方式重定向。
我强烈建议你去阅读 wiki,因为所有这些都在那里指定,它应该可以帮助你彻底理解这一点。