问题描述
我的服务器上具有以下层次结构:
/var/www/domain.tld/web
/sub
/etc/nginx/sites-available/domain.tld 中的根设置如下:
server {
root /var/www/domain.tld/web;
index index.html index.php index.htm;
...
location / {
try_files $uri $uri/ =404;
}
如何使nginx动态转发到特定文件夹,所以如果我在 / sub 中创建文件夹,例如/ var / www / domain.tld / sub / subdomain >因此,如果我发出请求http://subdomain.domain.tld,它将转发到文件夹子目录中的该文件夹吗? 因此,再次 something.domain.tld 将进入 /var/www/domain.tld/sub/something ,但进入域。 tld 将转到 /var/www/domain.tld/web
谢谢!
解决方法
首先,欢迎来到StackOverflow! :)
可能有几种方法可以实现此目的,但是我会尝试使用一个简单的map
从$my_subdir
设置一个$host
变量,然后可以在{{ 1}}。 root
变量是根据传入请求自动设置的。
在此示例中,我们使用正则表达式检查$host
是否与 subdomain.domain.tld 匹配。如果是这样,请捕获子域部分-方括号中的位-并使用它来使值“ sub / subdomain ”($host
意味着使用从正则表达式中捕获的第一件事) 。如果不匹配,则默认为“网络”。
那样,
- 当请求以
$1
之类的形式出现时,响应为http://domain.tld/foo.html
- 如果请求以
/var/www/domain.tld/web/foo.html
之类的形式出现,则响应为http://bar.domain.tld/foo.html
/var/www/domain.tld/sub/bar/foo.html