我有一个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服务器上执行某些操作来解决此问题?
非常感谢!
答案 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)文件。
使用标签
还创建了一个单独的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