У меня есть определенный IP-адрес на сервере Linux и домен, указывающий на IP.
Я установил приложение codeigniter и через некоторое время понял, что есть хотя бы пара доменов (не моих), также указывающих на мой IP-адрес.
Мне нужно остановить кодировщик, обслуживающий страницы, когда домен не принадлежит мне.
Есть ли чистое решение для этого? Может быть, что-то с URL-библиотекой? Интересно, есть ли лучшая практика в этом случае? Но, возможно, лучшая практика потребует остановки другого домена в каком-то другом месте? Что-то вроде конфига apache или htaccess?
Хорошей практикой для этого является использование виртуальных хостов. Вам лучше прочитать руководство по этому вопросу, прежде чем делать что-либо, я скажу, если вы никогда раньше не работали с Apache Vhosts.
Кстати, что вы должны сделать, чтобы правильно различать домены, указывающие на ваш сервер, это следующее:
Допустим, ваш домен www.mydomain.com, а ваш сайт находится в / var / www / vhosts / myproject /
Сначала перейдите в файл apache2.conf и добавьте строку:
Include sites-enabled/
Вам следует включить виртуальные хосты в вашей конфигурации apache, а затем создать файл конфигурации www.mydomain.com в / etc / apache2 / sites-available. Это должно быть что-то вроде этого:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/vhosts/myproject
ServerName www.mydomain.com
</VirtualHost>
Затем запустите:
a2ensite www.mydomain.com
Который создаст символическую ссылку на сайтах, включенных в этот файл конфигурации.
и затем перезапустите сервис.
Подсказка: я не знаю о специфическом поведении codeigniter. При объявлении DocumentRoot в файле www.mydomain.com вы должны указать каталог с файлом index.php вашего проекта. I: E. в FuelPHP это каталог public /, поэтому, если вы работали с Fuel, вам следует написать:
DocumentRoot /var/www/vhosts/myproject/public/
Поэтому убедитесь, что вы указываете на фронтальный контроллер codeigniter.
Повторите это для каждого другого домена, указывающего на ваш сервер, с конкретными файлами конфигурации на сайтах, доступных.
Надеюсь это поможет!
Указание нескольких доменов на одном IP — обычная ситуация. Вам просто нужно убедиться, что ваша конфигурация apache имеет VirtualHost, настроенный для управления вашим доменом, и никто другой.
Если вы беспокоитесь, что кто-то на вашем хосте настраивает свою конфигурацию apache так, чтобы она указывала на ваш каталог CI, вы можете попробовать сделать что-то подобное в вашем файле index.php:
<?php
if ($_SERVER['HTTP_HOST'] != 'YOUR DOMAIN')
{
// redirect, die, etc
}
Как в стороне (Правка):
Браузеры отправляют заголовок «Host:», когда они делают свой запрос. Это означает, что он перейдет на IP-адрес, но сервер там читает заголовок «Host» и отправляет его на правильный виртуальный хост (в apache это будет основано на ServerName). Так что, возможно, кто-то, кто разделяет хост с вами, может настроить свою конфигурацию apache так, чтобы она указала на вашу установку CI, но это, вероятно, единственный сценарий, где это будет проблемой. Перейдите на свой собственный хост, которым вы ни с кем не делитесь, и этот сценарий также удален.