Не могу получить доступ к сайту WordPress с внешнего IP, хотя внутри сети он работает
Я настроил небольшой сайт с использованием LAMP (Raspbian) и WordPress.
Для сайта не будет регистрироваться доменное имя.
Сейчас я получаю доступ к сайту изнутри локальной сети.
Для доступа я просто ввожу внутренний IP-адрес сервера.
Я хочу получить доступ к сайту извне локальной сети через публичный IP.
Публичный IP статический, и настроен Firewall для трансляции внутреннего IP/порта по умолчанию(80) в публичный статический IP/(случайный порт) и обратно.
Внутренний IP также статический, и Raspberry Pi подключен напрямую к FW через кабель.
Если я отправляю запрос с внешнего IP, страница никогда не загружается, и в админ-панели (через плагин WP Statistics) я вижу запрос.
Хочу отметить, что я изменил wp-config.php, а именно эти строки:
define('WP_HOME','http://внутреннийIP/');
define('WP_SITEURL','http://внутреннийIP/');
Какие изменения мне нужно внести, чтобы сайт отвечал на внешние запросы?
Есть ли что-то, что я должен проверить в конфигурации WordPress/Apache/mySql/Linux?
Сообщите, если потребуется какая-либо информация о конфигурации.
При установке WordPress на IP-адрес (или имя хоста), WordPress будет отвечать только на запросы с этого IP-адреса. Любой запрос с другого IP-адреса, даже если он ведет на тот же сервер, приведет к перенаправлению на страницу ошибки WordPress.
В такой ситуации я бы поступил следующим образом:
- Установите WordPress на публичный IP-адрес. Это сработает, если у вас есть возможность маршрутизировать запросы к публичному IP-адресу внутри сети.
- Если у вас нет возможности маршрутизировать запросы к публичному IP-адресу внутри сети, то я рекомендую установить WordPress на имя хоста. Вам необходимо настроить DNS так, чтобы внутри сети имя хоста разрешалось во внутренний IP-адрес, а извне — в публичный IP-адрес.
Под 1 ты имеешь в виду переустановку WP? Или будет достаточно изменить 2 строки define в wp-config.php? Под 2 ты имеешь в виду DNS внутренней сети? Например, настроить DNS на фаерволе/роутере или изменить hosts в Linux, чтобы резолвилось на публичный адрес? Любая дополнительная информация/ссылки будут очень кстати. (учти, что я протестирую это завтра в офисе), поэтому фидбек и/или отметка ответа как правильного могут занять время. Спасибо за помощь пока что!
vkoukou
(Приватный) IP-адрес, с которым ты устанавливал, прописан в базе данных. Либо переустанови WP, если она новая и ты не против потерять свою работу. Либо можно выполнить поиск и замену в базе данных. Дополнительно нужно будет обновить IP-адрес в wp-config.php.
user42826
Я попробую заменить его в базе данных через бэкап/изменение/замену оффлайн, затем загружу новые файлы на сервер плюс изменю home и site url на публичный IP в wp-config.php. Спасибо за всю помощь. Я вернусь и сообщу, сработало это или нет.
vkoukou
Доступ по публичному IP работает! Я использовал метод relocate из этой статьи и также изменил конфигурационный файл. Теперь WordPress не обслуживает запросы из-за фаервола (есть ли способ это сделать? либо через сеть, либо через Apache? возможно, это должно быть отдельной темой). Спасибо за помощь!
vkoukou
Хотя это не совсем считается предназначенным режимом работы, WP_HOME и WP_SITEURL могут объявляться динамически в зависимости от отдельного запроса, а не жестко задаваться.
В PHP изначально очень мало состояния, поэтому если вы укажете ему обрабатывать конкретный запрос так, будто он отвечает на этот или тот хостнейм/IP — он так и сделает.
Конечно, хотя это позволит ядру WordPress загрузиться, на его стороне есть некоторое состояние, такое как URL-адреса, зафиксированные в контенте, и тому подобное.
Короче говоря, это определенно возможно, но практическая применимость сильно зависит от особенностей сайта.