Проброс портов хоста (Ubuntu) в гостя (Windows) в VirtualBox
// 4 марта, 2011 // Веб-разработка, Виртуализация
Как и многие веб-разработчики, мы вынуждены тестировать наш веб-сервис в разнообразных броузерах и средах. И всё бы было хорошо, но, нам также приходится тестировать его в Internet Explorer 6, что доставляет нам много принеприятнейших минут. Не буду говорить всё, что я думаю по поводу этого броузера, а то к сути статьи я перейду не скоро. Итак Internet Explorer 6 живет в своей виртуальной машине (Windows XP), а веб-сервис в хосте (Ubuntu), и стоит задача по проброске порта веб-сервера(Nginx) из хоста в виртуалку.
Начал гугление этого вопроса я конечно же с хабра. Но http://vboxsvr у меня почему-то не заработал. Тогда я нашел другой вариант.
Проброс портов
Итак, что нужно сделать:
1. Заставляем Nginx/Apache слушать все интерфейсы:
server { ... listen 0.0.0.0:80; ... }
Перезагружаем nginx:
sudo service nginx restart
2. Необходимо настроить сеть гостя. Выбираем «Виртуальный адаптер хоста». Должно получиться что-то типа этого:
3. Смотрим, какой IP адрес у нас получает гостевой компьютер в хостовой системе.
host> ifconfig
Прописываем название хоста в файл C:\windows\system32\srivers\etc\hosts в госте.
192.168.56.1 site.ru
ТеперьВсё, теперь хостовый сервис должен открыться в гостевом броузере!
Доступ в интернет из гостя
Но есть небольшая проблема. При такой настройке в гостевой машине не работает остальной интернет. Для того, чтобы он заработал, надо добавить в настройки гостя в VirtualBox второй сетевой адаптер типа NAT.
После этого в гостевой машине появится новое сетевое подключение, и Интернет заработает.
Теперь в госте работает и сервис хоста и Интернет!
Спасибо!
Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:
А можно подробней о 1) пункте «Заставляем Nginx/Apache слушать все интерфейсы»… Какой файл надо редактировать?
И еще вопросик: У меня в ВиртуалБоксе не активны почему-то Сетевые адаптеры.. 🙁 Интернет в виртуалке есть, но 2-й адаптер добавить не могу
Конечно.
1) Это достигается директивой «Listen 0.0.0.0:80» в конфиге Apache. (httpd.conf или что скорее всего файл с vhost вашего сайта).
2) Неактивны закладки «Адаптер 2…4» в настрофках виртуальнйо машины?
С адаптерами разобрался. Они были не активны из-за того, что система (виртуалка) была запущена. Настраивать надо на выключенной системе..
А вот прописать «Listen 0.0.0.0:80″ в файле httpd.conf не помогает, так как Апач не стартует — пишет ошибка… Может как-то по другому прописать надо?..
Конечно на выключенной 🙂 Как именно апач ругается, может у вас 80 порт кем-то другим занят?
«(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down» — похоже, что да — занят порт! Как проверить, чем занят?
У меня походу все виртуальные хосты (сайты) на 80-м порте.. Но мне не получился их менять, так как я работаю на фирме (мы пользуемся Сабвершином), и у нас у всех должны быть одинаковые конфиги… Может есть альтернатива какая?
1. Добавить свой конфиг в svn:igonre чтобы он не закоммитился
2. А в чём проблема-то, один веб-сервер может обслуживать несколько сайтов. Если второй стартуете — присвойте ему другой порт, и вызывайте по нему.
Listen 0.0.0.0:81 например.