Nginx>如果从动态网站根目录移除 问题:在大多数情况下,请阅读nginx文档if is evil。

我目前具有以下nginx配置,效果很好

例如 对于网址domain1.foo.com

  1. 如果目录存在,则尝试提供根/var/www/domain1的服务
  2. 如果不存在,则以根/var/www/_default
server {

    # .. truncated .. #

    server_name ~^(www\.)?(?<domain>[^\.]+);
    root   /var/www/_default;

    location / {
        if (-d /var/www/$domain) {
            root /var/www/$domain;
        }
        if (!-d /var/www/$domain) {
            root /var/www/_default;
        }
    }
}

问题:在大多数情况下,请阅读nginx文档if is evil

  

如果在位置上下文中,可以在内部完成的唯一100%安全的事情是:

     

返回...;

     

重写...最后;

     

任何其他事情都可能导致不可预测的行为,包括潜在的SIGSEGV。

所以我尝试切换配置以使用try_files ...,这很混乱。 index.html不再默认提供服务,如果我添加index.html,那么我将不再获得404页,而是可以交叉提供文件了……有人可以指出正确的方向吗?

例如我应该在server块中使用像this answer这样的变量吗?

server {

    # .. truncated .. #

    server_name ~^(www\.)?(?<domain>[^\.]+);
    root    /var/www;

    location ~ ^/$ {
        try_files /$domain/index.html /_default/index.html =404;
    }
    location / {
        try_files /$domain/$uri/index.html /_default/$uri/index.html /$domain/$uri /$domain/$uri/ /_default/$uri /_default/$uri/ =404;
    }
}
yinxilin 回答:Nginx>如果从动态网站根目录移除 问题:在大多数情况下,请阅读nginx文档if is evil。

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3041881.html

大家都在问