33

У меня есть несколько промежуточных и тестовых серверов, для которых мне нужно постоянно изменять свой файл hosts (они зависят от имени домена, поэтому мне нужно изменить файл hosts, чтобы заставить их работать).

Я нахожу это раздражающим. Я хотел бы установить какой-нибудь портативный браузер для каждого типа сайта, с которым я хочу работать. Есть ли какая-либо версия любого графического веб-браузера (включая браузеры, основанные на механизмах рендеринга других браузеров), который будет делать это?

Таким образом, я могу просто запустить экземпляр, который уже настроен для работы с подготовкой, если я хочу протестировать подготовку.

Есть идеи?

РЕДАКТИРОВАТЬ: Важной особенностью является возможность одновременного запуска двух браузеров, причем оба переходят на some-address.com , но один браузер направляет запросы на сервер в 1.2.3.4 а другой браузер направляет запросы на сервер в 5.6.7.8 .

РЕДАКТИРОВАТЬ: (16.03.14)

Этот вопрос был задан несколько лет назад, и я до сих пор не знаю достойного способа сделать это. Позвольте мне попытаться объяснить дальше, потому что люди, кажется, неправильно понимают проблему. Это не то, что можно легко исправить с помощью прокси-сервера. Я полагаю, что было бы возможно написать обширные правила на прокси-сервере для решения проблем, но это огромное сложное решение, которое должно быть простой проблемой.

Итак, чтобы уточнить:

Есть три веб-сервера. Производство, тестирование и разработка. Каждый запускает мультитенантное приложение, которое настраивает себя на основе имени хоста, используемого для доступа к нему. Концептуально это похоже на систему управления контентом или систему блогов, которая позволяет запускать несколько сайтов с одного экземпляра сервера. Вы просто указываете имя хоста на сервере, и какое бы имя хоста не использовалось для доступа к нему через сопоставление имени хоста HTTP 1.1, это сайт, который он отображает.

Любое решение, которое просто переписывает хост-файл, не работает из-за необходимости одновременного запуска нескольких окон браузера на разных сайтах, производства, разработки, тестирования и т.д. Так что просто постоянное изменение файла хоста не работает, потому что это влияет на все экземпляры браузера. Если вы измените сопоставление для одного браузера, то другие обозреватели теперь также сопоставляются с этим сервером, поэтому любые последующие запросы будут идти на неправильный сервер.

Все, что я ищу, - это способ заставить этот экземпляр браузера использовать этот файл хоста, и этот экземпляр браузера использовать этот файл хоста, например, через параметр командной строки. Мне даже все равно, нужно ли мне устанавливать несколько копий браузера.

Это может быть выполнимо с переносным Firefox, так как я думаю, что он использует свои собственные файлы конфигурации для каждой установленной копии, но проблема в том, что стороннее программное обеспечение, используемое для администрирования сайтов, не работает с Firefox (сами сайты делают, но инструменты администратора нет, они нормально работают с Chrome, IE и Opera, однако ... и у меня нет доступа к источнику, чтобы это исправить).

8 ответов8

18

Squid решил проблему для меня. Я думаю, что многие прокси-серверы могли бы сделать то же самое.

В частности, мне пришлось установить Squid. Затем измените squid.conf так, чтобы он обращался к файлу альтернативных хостов. Это строка, которую вы хотите изменить:

#hosts_file /etc/hosts

В моем случае я использовал hosts_file /etc/hosts-squid . Я создал файл /etc/hosts-squid и изменил файл hosts-squid, чтобы он давал мне доступ к новым IP-адресам, которые я хотел получить по указанному URL. Это было все, что мне нужно было сделать, чтобы настроить прокси-сервер Squid.

Затем я создал команду для запуска моего браузера с настройками прокси. Я использовал:

chromium-browser --proxy-server=localhost:3128

Выполнение этой команды дает мне работающий экземпляр chromium, который может получить доступ к настройке доменов в файле hosts-squid, который я создал.

Я также смог настроить несколько прокси-серверов, используя несколько экземпляров Squid для доступа к производственному, разрабатываемому и локальному веб-сайту на одном компьютере. Инструкции по запуску нескольких экземпляров Squid находятся здесь. Я также написал сообщение в блоге, объясняющее проблему и решение более подробно.

6

Я считаю, что вы просите настроить виртуальную среду для каждого браузера, которая включает в себя собственный файл hosts.

Одним из решений может быть использование Sandboxie для настройки отдельной песочницы, каждая из которых содержит свой собственный файл hosts. Браузер не должен быть установлен в песочницу, чтобы использовать файл hosts, только что запущенный из этой песочницы. Ярлыки на рабочем столе могут быть созданы для запуска браузера из песочницы.

Недостатком будет то, что браузеры будут изолированы от реальной файловой системы, например, при загрузке файлов из Интернета, но Sandboxie включает механизмы для копирования таких файлов вне песочницы.

К сожалению, возможность одновременного запуска программ в более чем одной песочнице доступна только в платной версии Sandboxie (15 евро плюс налог за лицензию на один год для личного использования дома). Технико-экономическое тестирование может быть сделано с использованием бесплатной версии.

Для пользователей Linux аналогичные продукты:

3

Вы можете автоматизировать процесс изменения файла хоста с помощью Firefox + HostAdmin.

HostAdmin - это дополнение к Firefox, которое помогает вам изменять файл Hosts, переключать сопоставление IP-адресов доменов. HostAdmin может понять ваш файл Hosts через расширенный синтаксис файла Hosts. Кроме того, HostAdmin автоматически обновляет кэш DNS при каждом изменении файла Hosts, даже вручную.

Пример конфигурации

#==== Project 1
# 127.0.0.1 localhost1
127.0.0.1 localhost2
127.0.0.1 localhost3
#====
#==== Project 2
# 127.0.0.1 localhost1
# 127.0.0.1 localhost2
# 127.0.0.1 localhost3  

Более подробная информация на https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Несколько экземпляров

Для одновременного и независимого запуска двух экземпляров браузера Firefox в Linux создайте несколько программ запуска с помощью следующего скрипта. Также установите плагин во всех Firefox.

Firefox 1

#!/bin/bash
th="/home/$USER/tmp/p1"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote

Firefox 2

#!/bin/bash
th="/home/$USER/tmp/p2"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote  

Вы можете использовать опцию профиля (firefox -P ) в браузере, чтобы использовать собственные профили для других настроек и можете использовать их одновременно.

1

Я знаю, что это не то, что вы просите, но временным решением может быть написание пакетного скрипта для замены файлов хостов, а затем запуска браузера.

По крайней мере, это сведет к минимуму работу, которую вы делаете.

Или вы можете просто назвать эти серверы как-то совершенно по-другому в файле hosts, чтобы вам никогда не приходилось их переключать для начала.

1

Privoxy может быть использован для этой цели.

1

Не знаю, достаточно ли это удобно для вас, но одним из возможных решений будет установка IIS на машину с браузерами и предоставление серверных сценариев (таких как ASP.net, PHP, Ruby ...), которые изменяют файл hosts а затем перенаправить на фактическую страницу. В ваших браузерах вы затем создаете закладку для этого скрипта, например http://localhost/config_ie.rb которая изменяет файл hosts (требует правильных разрешений для этого файла, конечно), а затем выполняете перенаправление 302 на реальный стр.

1

Если полной виртуальной машины слишком много, может подойти решение на основе контейнера.

Если мы говорим о Linux здесь, lxc может быть возможным решением.

Кроме того, даже полная виртуальная машина с минимальным X11-linux не такая большая (максимум 2 ГБ диска) и не потребляет столько ресурсов (макс. 512 МБ ОЗУ) с современным оборудованием ...

Виртуальная машина Lubuntu может сделать здесь.

0

Одним из относительно простых решений (но, возможно, немного ресурсоемким) было бы иметь на своем хосте несколько виртуальных машин. Каждая виртуальная машина имеет свой собственный файл хоста.

Таким образом, у вас будет одна виртуальная машина для промежуточной среды, одна для Prod и т.д.

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