Nginx配置子域的文件夹

问题描述 投票:0回答:2

我如何配置名为“projects”的单个文件夹,其中每个子文件夹都是子域?示例:我有站点example.com在我的服务器上我有文件夹

/var/www/html/example.com

我创建了新文件夹:

/var/www/html/projects/

'projects'目录中的每个文件夹都是新的子域名:

/var/www/html/projects/site1 = site1.exapmle.com

谢谢


@ richard-smith,我在projects中设置配置文件/etc/nginx/sites-available,内容如下:

server {
listen 80;

root   /var/www/html/projects/$domain;
index index.php index.html index.htm index.nginx-debian.html;

server_name   ~^(www\.)?(?<domain>\.example\.com)$;

location / {
    try_files $uri $uri/ =404;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
    deny all;
}

} //而不是example.com我的domen名字。

/etc/nginx/sites-enabled创建符号链接并运行service nginx reload。但在打开site1.example.com之后。我得到"This site can’t be reached"。但我的example.com工作正常。

nginx configuration virtualhost
2个回答
0
投票

使用server_name指令中的正则表达式将允许您捕获子域的名称并在root指令中使用它。

server {
    server_name   ~^(www\.)?(?<domain>\.example\.com)$;
    root   /var/www/html/projects/$domain;
    ...
}

有关更多信息,请参阅this document


0
投票

在我的情况下,我想匹配不包括'www'的子域名,文件夹名称只是子域名,这个语法对我有用。

server {
    ...
    server_name ~^(?!www)(?P<domain>.+)\.example\.com$;
    root /var/www/html/projects/$domain;
    ...
}

test.example.com将使用根位置/var/www/html/projects/test

© www.soinside.com 2019 - 2024. All rights reserved.