通过CNAME设置新的白标服务时出现问题

时间:2018-10-16 23:57:42

标签: php apache .htaccess dns cname

我有一个SAAS,并且正在尝试允许其他人在自己的域中使用我的SAAS。因此,假设我的网站是app.example.com(以Apache和PHP作为后端语言托管),我希望允许某人从app.anotherwebsite.com等网站提供我的网站。

我已经在app.anotherwebsite.com上创建了一个CNAME:

#include <stdio.h>
int main()
{  
    #ifdef __APPLE__
      printf("test");
    #endif

    return 0;
}

但是,如果我访问app.anotherwebsite.com,它将在app.anotherwebsite.com/cgi-sys/defaultwebpage.cgi上加载默认的cPanel页面。

我已经尝试了很多网络上提供的解决方案,但是没有运气。有谁知道如何解决这个问题?我是否必须在example.com服务器上执行某些操作来解决此问题?

非常感谢!

1 个答案:

答案 0 :(得分:1)

在创建 CNAME 并尝试向其发出 HTTP 请求时,计算机将执行以下操作:

1)尝试查找与您的主机名相关的IP(在本例中为 app.anotherwebsite.com ),而 CNAME 是另一个主机名的别名,需要指向一个IP地址;

2)当计算机具有主机名的IP地址时,它将连接到端口80(对​​于 HTTP )或端口443(对于 HTTPS )并请求页面 app.anotherwebsite.com ;

3)IP地址的 HTTP 服务器将在其配置中搜索与 app.anotherwebsite.com 匹配的虚拟主机。如果没有配置与请求的主机名匹配的虚拟主机,它将为默认虚拟主机提供服务。在Apache上,如果没有显式声明的默认虚拟主机,则将配置的第一个虚拟主机选为默认虚拟主机。

在您的情况下,您的 CPANEL 是您的默认虚拟主机,这就是它显示它的原因。

因此,要使您的 SASS 在这种情况下工作,您可以将默认虚拟主机更改为应用程序,也可以添加带有通配符的虚拟主机,例如< strong> app。* 。它会收到请求的主机名(在PHP上,您可以作为$ _SERVER [“ SERVER_NAME”]]访问它。)

下面是示例代码:

<?php
echo "Hello!<br />\n";
echo "<br />\n";
echo "I'm seeing you're requesting the hostname " . $_SERVER["SERVER_NAME"] . "!\n";
?>

您的代码可以处理此信息,并根据该变量为您的客户服务。

编辑:

您可以使用以下代码在Apache上添加虚拟服务器:

<VirtualHost *:80>
  ServerName app.example.com
  ServerAlias app.*
  DocumentRoot /var/www/SASS

  <Directory /var/www/SASS>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/SASS-error.log
  CustomLog ${APACHE_LOG_DIR}/SASS-access.log combined
</VirtualHost>

此Apache虚拟主机添加一个名为 app.example.com 的新服务器,并且还将匹配 app。* 请求。

服务器将指向 / var / www / SASS 作为根目录,查找index.html或index.php(如果Apache启用了PHP)文件。

使用标签授予的对 / var / www / SASS 的权限不允许自动创建不包含索引文件的目录的索引文件,并允许使用 .htaccess

还创建了一个单独的error_log和access_log来记录与该条目匹配的请求。

要检查Apache配置并查找所有虚拟主机,请使用以下命令:

apachectl -t -D DUMP_VHOSTS

这将产生如下输出:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server cpanel.example.com (/etc/httpd/conf/httpd.conf:994)
         port 80 namevhost cpanel.example.com (/etc/httpd/conf/httpd.conf:994)
         port 80 namevhost app.example.com (/etc/httpd/conf/httpd.conf:1044)
                 wild alias app.*
Syntax OK
相关问题