根据另一个目录的存在设置nginx root

时间:2015-08-07 21:12:20

标签: nginx rewrite wildcard-subdomain

我正在构建一个为用户帐户使用动态DNS的系统,因此您注册了一个子域。

我有一些服务器指令来捕捉像api这样的东西。和www。和其他特殊情况,我有一个指令,它读取通配符域名并使用它来设置特定于域的资产位置。

server {
  server_name "~^(?<domain>[a-z0-9]+)\.example\.com$";
  root /sites/core;
  location /assets {
    alias /site-assets/$domain;
  }
}

我想要做的是检查资产目录是否存在,并在同一个域上显示不同的网站。

为了澄清,如果上面示例中的资产目录存在,则提供一组文件,否则,提供另一组文件。由于我想要提供的网站不会出现在相关目录中,因此我无法使用try_files或类似内容。

我阅读了有关使用if指令的所有恐怖故事,但我认为我需要类似

的内容
if (-d /site-assets/$domain) {
  ... Do something
}

然后更改根目录,但这不起作用。

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:1)

行。我想通了。如果有问题,请告诉我。

我在服务器指令

中有以下内容
def detect_file(watch_folder_path):
    """ Detect a file dropped """
    watched_files = os.listdir(watch_folder_path)
    if len(watched_files) > 0:
        filename = watched_files[0]
        print "File located :, filename

如果给定域名的资产目录不存在,那么我可以为我的站点提供加入页面,该页面可以获取域名并允许用户注册。如果确实存在,则提供主应用程序。

在我看来,这简单地使用了if指令,所以不应该让我遇到太多麻烦。