Не могу получить доступ к сайту 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, чтобы резолвилось на публичный адрес? Любая дополнительная информация/ссылки будут очень кстати. (учти, что я протестирую это завтра в офисе), поэтому фидбек и/или отметка ответа как правильного могут занять время. Спасибо за помощь пока что!

(Приватный) IP-адрес, с которым ты устанавливал, прописан в базе данных. Либо переустанови WP, если она новая и ты не против потерять свою работу. Либо можно выполнить поиск и замену в базе данных. Дополнительно нужно будет обновить IP-адрес в wp-config.php.

Я попробую заменить его в базе данных через бэкап/изменение/замену оффлайн, затем загружу новые файлы на сервер плюс изменю home и site url на публичный IP в wp-config.php. Спасибо за всю помощь. Я вернусь и сообщу, сработало это или нет.

Доступ по публичному IP работает! Я использовал метод relocate из этой статьи и также изменил конфигурационный файл. Теперь WordPress не обслуживает запросы из-за фаервола (есть ли способ это сделать? либо через сеть, либо через Apache? возможно, это должно быть отдельной темой). Спасибо за помощь!

Хотя это не совсем считается предназначенным режимом работы, WP_HOME
и WP_SITEURL
могут объявляться динамически в зависимости от отдельного запроса, а не жестко задаваться.
В PHP изначально очень мало состояния, поэтому если вы укажете ему обрабатывать конкретный запрос так, будто он отвечает на этот или тот хостнейм/IP — он так и сделает.
Конечно, хотя это позволит ядру WordPress загрузиться, на его стороне есть некоторое состояние, такое как URL-адреса, зафиксированные в контенте, и тому подобное.
Короче говоря, это определенно возможно, но практическая применимость сильно зависит от особенностей сайта.
