nginx 将子域名重定向到文件夹

nginx 将子域名重定向到文件夹

在 Nginx 中,我想将我的 subdomain.domain.com 重定向到 domain.com/sub/。我该怎么做?我想使用 domain.com 的现有站点配置文件,而不是创建一个新的。

我拥有的配置文件是(我该如何添加)

======

server {
listen   80;
server_name www.domain.com domain.com  *.domain.com;
access_log /srv/www/domain.com/logs/access.log;
error_log /srv/www/domain.com/logs/error.log;

location / {
    root   /srv/www/domain.com/public_html;
    index  index.html index.htm;
}

位置 /phpmyadmin { 根 /usr/share; 索引 index.php; }

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  /srv/www/domain.com/public_html$fastcgi_script_name;
}

}

=========

答案1

抱歉 Mike,你的 if 语句解决方案是个坏主意...请参阅 Nginx陷阱wiki 页面上的原因(在这种情况下,nginx 将评估每个请求的指令,这是低效的)...

在包含以下内容的服务器块上方添加另一个服务器块:

server {
   server_name subdomain.domain.com;
   rewrite ^ $scheme://domain.org/subdomain$request_uri redirect;
}

魔法就完成了……

答案2

这将进入你的服务器块。这未经测试,但应该可以工作或给你一个想法

if ($host ~* "^(.*)\.domain\.com$"){
  set $subd $1;
  rewrite ^(.*)$ http://domain.com/$subd permanent;
  break;
}

相关内容