本文介绍百度云主机BCH多域名分别绑定不同子目录实现一机部署多站的nginx配置文件写法之一。

BCH上原有一个example.com绑定在webroot根目录,最近想增加一个newdomain.com,与原来的网站分别放入两个子目录中。阿里云主机可以通过修改Apache.htaccess文件中的rewrite规则实现,想必BCH也能通过修改nginx配置文件实现,于是一番学习nginx配置文件的语法规则。

反复修改webroot目录下的bcloud_nginx_user.conf,怎么都无法实现想要的效果,百思不得其解。怀疑是不是BCH限制了一机多站,于是发工单询问百度技术支持,确认没有做特别限制后,继续探索。根据HTTP响应情况和log文件记录情况逐步调试,最终成功写出了完整的配置文件,实现了预期效果。下面将配置文件内容分享给大家参考。

if ($host ~* (www.)?(example|newdomain).com) {
    set $subsite $2;
}

首先匹配绑定的两个域名example.comnewdomain.com,设置子站标识。同时在webroot目录中创建两个子目录examplenewdomain分别放置两个网站的文件。

location = / {
    root /home/bae/app/$subsite;
    if (-f $request_filename/index.html) {
        rewrite (.*) /$subsite/index.html break;
    }
    if (-f $request_filename/index.php) {
        rewrite (.*) /index.php last;
    }
}

将最常用的首页path=/匹配出来,设置文档根目录为上一步创建的子目录。如果子目录中存在index.html则重定向到子目录,中止匹配;如果子目录中存在index.php则重定向到index.php,继续匹配。

location ~* \.(html|htm|js|css|jpg|jpeg|png|gif|svg|ico) {
    rewrite ^/(.*) /$subsite/$1 break;
}

处理静态文件,全部重定向进入子目录,中止匹配。

location ~* \.php {
    root /home/bae/app/$subsite;
    if (!-f $request_filename) {
        rewrite (.*) /index.php last;
    }
    set $path_info "";
    set $real_script_name $fastcgi_script_name;
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
        set $real_script_name $1;
        set $path_info $2;
    }
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_param SERVER_PORT 80;
    include fastcgi_params;
}

处理php脚本文件,把官方文档中关于server级配置中对php文件的处理,直接复制过来进行修改覆盖。增加第2~5行,设置新的文档根目录为子目录,如果脚本不存在,重定向到首页,重新匹配本规则;如果脚本存在,则转交给fastcgi处理。

location ~* ^\/[^\.]*$ {
    root /home/bae/app/$subsite;
    # index index.html index.php;
    if (-f $request_filename/index.html) {
        rewrite (.*) /$subsite$1/index.html break;
    }
    if (-f $request_filename/index.php) {
        rewrite (.*) $1/index.php last;
    }
    if (!-f $request_filename) {
        rewrite (.*) /index.php last;
    }
}

匹配path为二级或多级目录的情形,寻找目录中的index.htmlindex.php,如果找不到也重定向到首页。注意这里不能使用index指令(第3行)设置默认首页文件,会产生循环重定向问题。

将上述代码块组合到一起,就是完整的bcloud_nginx_user.conf文件,放入webroot根目录,重载站点即可。注意要清空控制面板中的默认首页配置,也就是bcloud_nginx_gen.conf中不能有重复的location匹配,不然会产生冲突。

标签: none

已有 16 条评论

  1. 长春传奇私服震撼发布:揭秘神秘游戏帝国幕后黑手!:https://501h.com/danzhiye/17289.html

  2. 你的文章总是能给我带来欢乐,谢谢你! https://www.4006400989.com/qyvideo/59918.html

  3. 《海阔天空》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/122041.html

  4. 你的文章让我心情愉悦,每天都要来看一看。 https://www.4006400989.com/qyvideo/10622.html

  5. 你的文章内容非常精彩,让人回味无穷。 http://www.55baobei.com/NzY2LE8Z9y.html

  6. 你的文章让我感受到了无尽的欢乐,谢谢分享。 http://www.55baobei.com/TtETPQJPqz.html

  7. 真好呢

  8. 《恋恋凡花》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/146221.html

  9. 你的文章让我学到了很多知识,非常感谢。 http://www.55baobei.com/4gJmllwSKb.html

  10. 你的文章总是能给我带来欢乐,谢谢你! http://www.55baobei.com/QySQlyw4ZC.html

  11. 你的文章充满了智慧,让人敬佩。 https://www.yonboz.com/video/70110.html

  12. 你的文章让我感受到了正能量,非常棒! https://www.yonboz.com/video/31275.html

  13. 你的文章让我学到了很多技能,非常实用。 https://www.yonboz.com/video/10077.html

  14. 你的文章让我学到了很多技能,非常实用。 http://www.55baobei.com/XzJDo59YIG.html

  15. 《你好陌生人电影版》爱情片高清在线免费观看:https://www.jgz518.com/xingkong/150808.html

  16. 你的文章充满了欢乐,让人忍不住一笑。 https://www.4006400989.com/qyvideo/5095.html

添加新评论