Почему мой веб-сайт не отображается правильно, когда к нему обращаются через другой компьютер в той же локальной сети

8979
TokyoDan

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

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

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

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

1
Мне нужно больше информации, чем это. Какое у тебя доменное имя? Это в папке по локальной сети? Какие ссылки ломаются? McKayla 13 лет назад 0

4 ответа на вопрос

4
Adam

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

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

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

IP-адрес локальной сети нигде не используется на веб-сайте по той простой причине, что создатель веб-сайта является удаленным. Он обращается к веб-серверу через глобальную сеть и не знает мой IP-адрес в локальной сети. TokyoDan 13 лет назад 0
1
Spiff

Ваш роутер неправильно выполняет "шпильку 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 вашего маршрутизатора, который из-за Ваш глючный маршрутизатор означает, что веб-сервер администрирования вашего маршрутизатора сам перехватывает эти запросы, и у него нет этих ресурсов, поэтому происходит сбой.

Из моей локальной сети (за брандмауэром) Когда я захожу на WAN IP, я получаю страницу администратора маршрутизатора. Когда я перехожу к IP-адресу локальной сети сервера, я получаю индексную страницу, но все перепутано. И гиперссылки не работают. TokyoDan 13 лет назад 0
@ Токио Дан Да, я это понял. Это как раз та ситуация, к которой относится мой ответ. Вы НЕ должны получать страницу администрирования маршрутизатора, когда переходите на WAN IP маршрутизатора из локальной сети. Вы все равно должны получить свой сервер так же, как и вне вашей сети. Тот факт, что вы получаете страницу администрирования вашего роутера, означает, что он не выполняет корректную привязку NAT. Spiff 13 лет назад 0
0
Joel Coehoorn

Вам нужны относительные ссылки, а не абсолютные ссылки. Так что вместо этого в вашем 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" /> 
Это может немного помочь, но ему не пришлось бы делать это, если бы его маршрутизатор правильно сделал шпильку NAT. Если он пойдет по этому пути «сделать все ссылки относительными», ему также придется перенастроить правила перенаправления / перезаписи своего веб-сервера. Например, установка Apache по умолчанию в моей ОС будет перенаправлять «http://192.168.0.1» на «http://mydomain.com/» (упс, Markdown съел http: // в тех) только для отключения завершающий символ "/" и перенаправление, подобное этому, снова столкнутся с его сломанным шлюзом NAT. Spiff 13 лет назад 0
Куда мне обратиться или какие настройки я проверяю в своем маршрутизаторе, чтобы убедиться, что у меня даже правильно настроена настройка haipin NAT? TokyoDan 13 лет назад 0
0
RandomUser

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

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

IP.OF.LOCAL.WEBSERVER site.com sitehostname