php - nginx 获取 url 的子域并分配文档根目录

标签 php regex nginx

我不是 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/

相关文章:

php - 如何从wordpress数据库获取缩略图到外部页面

PHP 条件问题数据结构

php - 如何在 Guzzle6 中创建批处理请求?

python - 使用 Pyparsing 为上下文相关元素编写语法规则

php - MySQL 和 PHP 很好,但 Web 服务很慢

php session 超时

javascript - 单词边界元音的正则表达式

sql - 如何在 SQLite3 和 Rails 3.1 中打开 REGEXP?

.net - HttpWebRequest 似乎没有发送客户端 SSL 证书

php - 使用专用 php-fpm 服务器的 Nginx 负载平衡