У меня есть SAAS, и я пытаюсь разрешить другим людям использовать мой SAAS в своем домене. Итак, предположим, что мой сайт — app.example.com (размещенный на Apache и с PHP в качестве языка бэкэнда), я хочу разрешить кому-то предлагать мой сайт, например, app.anotherwebsite.com.
Я уже создал CNAME на app.anotherwebsite.com:
app.anotherwebsite.com CNAME app.example.com.
Но если я захожу на app.anotherwebsite.com, он загружает страницу cPanel по умолчанию на app.anotherwebsite.com/cgi-sys/defaultwebpage.cgi.
Я уже попробовал много решений, предлагаемых в Интернете, но безуспешно. У кого-нибудь есть подсказки, как решить это? Нужно ли что-то делать на сервере example.com, чтобы это исправить?
Большое спасибо!
Когда вы создаете CNAME и попытаться сделать HTTP В ответ на запрос компьютер выполняет следующие действия:
1) Попробуйте найти IP-адрес, связанный с вашим именем хоста (в этом случае app.anotherwebsite.com) и CNAME это псевдоним другого имени хоста, который должен указывать на IP-адрес;
2) Когда у компьютера есть IP-адрес имени хоста, он подключается к порту 80 (в случае HTTP) или порт 443 (в случае HTTPS) и запросить страницу app.anotherwebsite.com;
3) Ваш HTTP сервер по IP-адресу будет искать в своей конфигурации виртуальный хост, который соответствует app.anotherwebsite.com. Если нет настроенного виртуального хоста, соответствующего запрошенному имени хоста, он будет обслуживать дефолт виртуальный хост В Apache, если нет явного объявленного виртуального хоста по умолчанию, первый настроенный виртуальный хост будет выбран по умолчанию.
В вашем случае ваш CPANEL твой дефолт виртуальный хост, и именно поэтому он отображает его.
Итак, чтобы ваш SASS работать по этому сценарию, вы можете изменить дефолт виртуальный хост к вашему приложению, или вы можете добавить виртуальный хост с подстановочным знаком, как приложение.*. Он получит запрошенное имя хоста (в 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, и также будет соответствовать приложение.* Запросы.
Сервер будет указывать на / 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
Других решений пока нет …