1

Я использую веб-сервер (Ubuntu) в моей локальной домашней сети. Я за роутером. На WAN у меня прямой IP. Когда я не нахожусь в моей домашней сети и не обращаюсь к моему веб-сайту через прямой IP-адрес WAN, мой веб-сайт отображается правильно, и все работает.

В моей домашней локальной сети за маршрутизатором, доступ к моему веб-сайту через WAN direct позволяет получить доступ к странице входа администратора моего маршрутизатора. Это нормально. Но...

Доступ к моему веб-сайту (через IP-адрес домашней локальной сети) с другого компьютера в моей домашней локальной сети приводит меня к веб-сайту, но отображение макета не работает, и нажатие на любую ссылку приводит меня к прямому IP-адресу WAN (странице входа администратора моего маршрутизатора).

Как я могу заставить мой веб-сайт отображаться правильно и ссылки на работу при доступе к нему из моей домашней локальной сети?

4 ответа4

4

Проверьте ваши CSS и JavaScript URL. Возможно, вам придется переключить их с относительных на абсолютные ссылки, поскольку похоже, что маршрутизация URL-адресов отличается в зависимости от того, как вы пытаетесь получить доступ к сайту.

Самый простой способ сделать это - посмотреть ресурсы, которые браузер пытается загрузить с помощью инструментов Firebug или Developer (вкладка «Ресурсы»). Убедитесь, что ваши таблицы стилей загружаются правильно (вы должны быть в состоянии выбрать их и просмотреть содержимое). Если они не принадлежат вам, или вы видите ошибку на вкладке ресурсов, проверьте URL-адрес, который просматривает браузер, и убедитесь, что это правильный URL-адрес.

Я готов поспорить, что ваш браузер ищет таблицы стилей по IP-адресу вашей локальной сети, но он должен искать IP-адрес в глобальной сети.

1

Ваш роутер неправильно выполняет "шпильку NAT". Многие дешевые домашние шлюзы имеют глючный код NAT, который не делает это правильно.

Похоже, у вас уже правильно настроены функции сопоставления портов вашего маршрутизатора (так называемая "переадресация портов") или DMZ (так называемый "хост по умолчанию", "базовый хост" и т.д.), Поскольку со стороны WAN маршрутизатора, когда вы указываете браузер на общедоступный IP-адрес WAN маршрутизатора, вы получаете страницу с веб-сервера.

Но если вы находитесь во внутренней сети, когда вы подключаетесь к общедоступному IP-адресу WAN вашего маршрутизатора, вы все равно должны получить страницу своего веб-сервера, а не страницу администратора вашего маршрутизатора. Если ваш маршрутизатор хочет обслуживать свою страницу администратора, когда вы подключаетесь к порту 80 по его частному IP-адресу NAT, это нормально. Но не на общедоступный IP-адрес в глобальной сети.

Когда вы работаете с клиентом на частной стороне NAT и пытаетесь получить доступ к веб-серверу напрямую через его частный IP-адрес NAT, он может нормально загрузить первый HTML-файл на основе URL-адреса типа " http://192.168. 0.254/ ", но когда браузер загружает файл CSS и изображения, он, вероятно, формирует URL-адреса, например" http://mydomain.com/styles.css ", что означает публичный IP-адрес WAN вашего маршрутизатора, который из-за Ваш глючный маршрутизатор означает, что веб-сервер администрирования вашего маршрутизатора сам перехватывает эти запросы, и у него нет этих ресурсов, поэтому происходит сбой.

0

Вам нужны относительные ссылки, а не абсолютные ссылки. Так что вместо этого в вашем html:

<link rel="stylesheet" type="text/css" href="http://example.com/mysite.css" />
<img src="http://example.com/images/someimage.png" alt="Some Image" />

Вам нужно, чтобы это выглядело так:

<link rel="stylesheet" type="text/css" href="/mysite.css" />
<img src="/images/someimage.png" alt="Some Image" />
0

Он пытается загрузить вашу тему из-за пределов вашей сети, используя ваше доменное имя (то есть: site.com)

Простое решение - отредактировать файл /etc /hosts и добавить

IP.OF.LOCAL.WEBSERVER site.com sitehostname

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .