我不是 nginx 专家,但我通过这样做解决了我的问题:
server_name ~^(?<vhost>.*)$;
root /var/www/$vhost/public;
例如,如果用户在网络浏览器中键入 http://sysadmin.mydomain.com nginx 将使用 /var/www/sysadmin.mydomain.com/public
的文档根目录这工作正常,但这样做我在 PHP $_SERVER['SERVER_NAME']; 中产生了另一个问题。并且这将打印:~^(?.*)$ 在我的代码中的其他地方导致问题。
我的解决方案适用于 nginx,但它不是正确的解决方案。我怎样才能做到这一点并仍然保留“可读”的服务器名称?
最佳答案
这就是我想要的技巧:
server_name mydomain.com ~^(?<vhost>.+)\.mydomain\.com$;
root /var/www/$vhost.mydomain.com/public;
$_SERVER['SERVER_NAME'] 将回答:mydomain.com,这对我来说很好。
关于php - nginx 获取 url 的子域并分配文档根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647570/