У меня есть доменное имя example.com
и VPS со статическим IP-адресом 123.123.123.123
.
Я хочу, чтобы браузеры указывали доменное имя для доступа к содержимому сайта.
На практике я хочу, чтобы люди видели мой сайт, только если они наберут exemple.com
, а не 123.123.123.123
в строке url своего браузера.
Поэтому в каталоге /var/www/
я создал два подкаталога.
/var/www/default
(для содержимого, которое будут видеть те, кто не указал dn)
и /var/www/exemple
для фактического содержимого сайта.
Я отредактировал свой файл /etc/apache2/sites-enabled/000-default.conf
следующим образом.
<VirtualHost *:80>
DocumentRoot /var/www/default
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/exemple
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
По моему мнению, это должно работать. На практике сервер выдает мне содержимое /var/www/default
, если я ввожу 123.123.123.123
и exemple.com
в строку url браузера.
Почему?
Apache будет направлять трафик на первый соответствующий VirtualHost
, который он видит в конфигурации. Поскольку первый определенный не определяет ServerName
или ServerAlias
, он настроен на перехват любого трафика на любое связанное имя хоста или любой связанный IP-адрес на порту 80.
Вы забыли назвать VirtualHost, выделенный для example.com. Вот мои модификации (с некоторыми добавленными предложениями):
<VirtualHost *:80>
DocumentRoot /var/www/default
</VirtualHost>
<VirtualHost 123.123.123.123:80> # <= Should fix your issue
ServerName example.com
ServerAlias www.example.com # <= Suggested modification
ServerAdmin webmaster@localhost
DocumentRoot /var/www/exemple
ErrorLog ${APACHE_LOG_DIR}/error-example.log # <= Suggested modification
CustomLog ${APACHE_LOG_DIR}/access-example.log combined # <= Suggested modification
</VirtualHost>
Конечно, не забудьте перезагрузить Apache.