На прошлой неделе я установил Varnish, и мои веб-сайты теперь работают с ним нормально - я могу перемещаться и изменять их без ошибок. Когда я его установил, я поставил Varnish на порт 80 и переместил Apache на порт 8080.
Позже я заметил, что если я запустил в своем браузере следующее, я не смогу получить доступ к phpmyadmin:
МОЙ_IP: 80 / phpmyadmin МОЙ_IP: 8080 / phpmyadmin
Тем не менее, если я перемещу phpmyadmin, чтобы сказать / var / www / html / site_dir / phpmyadmin, я действительно смогу получить к нему доступ без проблем через domain.tld / phpmyadmin
Но вот что-то странное, теперь кажется, что ничего с IP_ADDRESS не работает, даже сайт, который работает без него в браузере:
MY_IP / domain.tld MY_IP / domain.tld / phpmyadmin MY_IP: 8080 / domain.tld / phpmyadmin
У меня вопрос: почему я не могу получить доступ к чему-либо на сервере с IP-адресом, кроме страницы Apache index.html, из любого браузера?
Я установил Varnish следующим образом:
cd ~
apt-get update && apt-get install varnish -y
sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/000-default.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain.tld.conf && domain.tld.conf
mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future.
cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
VARNISH
systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service
Это (относительно) нормальное поведение.
Ваша конфигурация Apache настроена для обслуживания /var/www/html/site_dir
из вашего домена. Это означает, что вы фактически не можете получить доступ ни к чему не в этом каталоге, когда вы проверяете свой сайт из своего домена. Если вы хотите получить доступ к PHPmyAdmin с доменного имени, вам придется переместить его в site_dir
, или измените свой веб-корневой каталог на /var/www/html
и переместите все остальные файлы.
В качестве альтернативы вы можете создать новый виртуальный хост для PHPmyAdmin с его собственным доменным именем, например:
<VirtualHost pma.example.com:8080>
ServerName pma.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/phpmyadmin/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
[ anything else ... ]
</VirtualHost>
Что касается того, почему вы не можете получить доступ ни к чему по своему IP-адресу, так это потому, что ваш виртуальный хост для вашего домена настроен на ваш домен. Когда Apache не может сопоставить ни один из ваших виртуальных хостов, он возвращается к 000_default
, который не имеет установленного ServerName и слушает все. Если вы хотите, чтобы к вашему сайту всегда был доступ (по IP или какому-либо другому), вам необходимо настроить текущий виртуальный хост таким же образом, как и 000_default
настроен (или просто перенастроить 000_default
и отключите свой собственный виртуальный хост). Или создайте новый виртуальный хост, соответствующий вашему IP.
Если вы хотите использовать свой IP-адрес в качестве «черного хода» для управления такими вещами, как PHPmyAdmin и всем остальным, хранящимся в /var/www/html
, вы можете настроить это, убедившись, что DocumentRoot
является /var/www/html
. Обратите внимание, однако, что это представляет незначительную угрозу безопасности, особенно если вы размещаете несколько доменов на своем веб-сайте.