Я хочу, чтобы мой сайт разработки был доступен большему количеству компьютеров в доме. Я обнаружил, что доступ к нему через внутренний IP-адрес, например 192.168.0.198, очень медленный по сравнению с подключением к localhost.
Я бы предпочел немного потренироваться в отладке таких ситуаций, потому что может не быть однозначного ответа.
На сервере запущен nginx для статического контента, перенаправляемый на apache (127.0.0.1:8888) для динамического HTML, сгенерированного django. Я также использую postgresql и solr для базы данных и индекса поиска, а также кеш-память.
В моем файле django settings.py перечислены 127.0.0.1 и 192.168.0.198 как внутренние IP-адреса. Бэкэнд БД настроен для localhost. Бэкэнды memcached и solr настроены на 127.0.0.1.
Мой файл / etc / hosts выглядит так:
127.0.0.1 localhost localhost
192.168.1.198 localhost
127.0.1.1 jacob-desktop
127.0.0.1 redmine
(Я обращался к своей системе управления проектами Redmine с использованием виртуального хоста на основе имени, пока не установил nginx - для этого он нужен).
Интересно, что доступ к статической домашней странице кажется намного быстрее, чем к последующим страницам, имеющим доступ к DB / memcached / solr.
Большая часть моей путаницы связана с тем, в чем именно заключаются различия между localhost / 192.168.0.198 / 127.0.0.1, как эти различные IP-адреса взаимодействуют с сетевой инфраструктурой (в моем случае, дрянным маршрутизатором dlink). Кроме того, существуют различные системы, такие как solr и postgresql, в которых я не уверен, какие IP-адреса я хочу использовать.
Цель состоит в том, чтобы настроить эти области таким образом, чтобы я был на правильном пути к горизонтальной масштабируемости - это означает, что 127.0.0.1, вероятно, не будет там, где находится мой индекс db / search.
В общих случаях на одной машине лучше использовать lo0 вместо внешнего интерфейса, потому что:
У меня нет здесь полного ответа - скорее несколько намеков на то, с чего бы я начал искать ...
Обычно доступ к вашему собственному IP-адресу не передается по сети, например ваш роутер не должен быть задействован. Может быть задействован обратный поиск, но, похоже, он обрабатывается через ваш файл hosts ...
Что касается вашего / etc / hosts, я не видел, чтобы 192.168.x.x присваивался имени localhost - это скорее имя машины или любой псевдоним, на который ваша машина должна отвечать.
Также вы можете попробовать, если
route
route -n
дают некоторые временные результаты - например, первая команда выполняет обратный поиск, вторая - нет.
Что не кажется вашей проблемой, но связано:
У меня были проблемы со скоростью, когда IP-адрес не разрешался - например, может помочь либо обратный поиск DNS, либо соответствующий файл / etc / hosts. Причина в этом случае обычно заключается в некотором журналировании, в котором выполняется поиск имени хоста, время ожидания которого истекает, когда DNS не может быть разрешен. Это особенно характерно для ssh-логинов на машинах, на которых адрес клиента (точнее: имя) не может быть разрешен.