virtualbox та nginx ім'я_сервера


2

Я намагаюся налаштувати gitlab, що працює в гостях Ubuntu 12.04 з хостом Windows7. Я можу ssh гостя за допомогою переадресації портів та доступу до сервера nginx за допомогою перенаправлення портів (8888 у хості 80 у гостях, тому localhost: 8888 у хості потрапляє на сервер nginx у гості), але ім'я сервера у файлі конфігурації nginx - доставляє мені клопоту. Яке правильне прослуховування та ім’я сервера, яке би прийняв nginx?

У гостя є інтерфейс NAT у 10.0.2.15 та інтерфейс лише для хостів у 192.168.56.101, статичний.

Дякую!

EDIT: Оскільки хост використовує статичну ip-адресу, я не можу використовувати мостовий режим для гостя Ubuntu, тому я повинен дотримуватися лише хоста та переадресації портів. Завдяки цьому я можу отримати доступ до сервера nginx у гостях, але ім'я_сервера все ще помиляється, оскільки я повинен використовувати localhost: 8888 у хості Windows та переслати його на порт 80 у гостях. Яким має бути ім’я_сервера?

Відповіді:


2

nginx розгляне ім'я, вказане в URL-адресі, щоб дістатися до сервера та порівняти з ім'ям сервера. Ви повинні використовувати ім'я хоста гостьової машини, щоб дістатися до нього та використовувати його як ім'я сервера. Інший спосіб - використовувати локальний DNS або hostsфайл для надання потрібного IP-адреси для імені хоста гостьової системи (або будь-якого урі, який ви хочете - наприклад, веб-сайт, який розробляється) і використовувати це ім'я хоста або uri як ім'я сервера.

Щоб використовувати сервер у гостях, я б запропонував використовувати мостовий режим замість NAT, тому вам не потрібен порт вперед та уникнути безлічі дрібних ускладнень. (Obs: Я не кажу, що ти не можеш працювати з NAT, але мені здається, що місткість простіша у використанні)


Я намагався використовувати мостовий режим, але їх хост Windows не може знайти гостя ні в одному порту. Будь-які пропозиції з цього боку? Документи нічого не показують для цього випадку.
Іван

Крім того, я змінив другий NIC на мостовий. Хост Windows має ip 192.168.56.1, а гість ubuntu має eth1 на 192.168.56.101, але вони не бачать один одного. Чи є ще щось, що потрібно налаштувати? Спасибі
Іван

Вони повинні бачити один одного, якщо вони знаходяться в одній підмережі без проблем ... Я ніколи не використовував хост у Windows, але з хостом на ubuntu нічого не налаштовувати, тому я думаю, що це має бути те саме. Ви не можете ввімкнути IP-адресу безпосередньо або лише по імені? Якщо він доступний IP-адресою, це проблема вирішення імені, тому якщо у вас немає локального DNS, ви можете використовувати хост-файл Windows-машини (у C:\WINDOWS\system32\drivers\etc\hostswinxp - повинен бути подібний на win7 ...), щоб поставити потрібний IP для вашого гостя (синтаксис такий же, як у Linux).
Лоран

Проблема тут полягає в тому, що хост має реальну та статичну ip адресу, тому я не можу використовувати мостову мережу. Доводиться вирішувати лише хост і переадресацію портів.
Іван

Так що з NAT, ваш гість не знаходиться в підмережі, маршрутизованої вашим маршрутизатором. Немає проблем, вам потрібно буде лише перейти до хоста, а хост повинен буде направити гостя. Під реальним IP ви маєте на увазі публічний статичний IP? Якщо це так, воно не може бути позаду NAT.
Лоран

2

Дякую за допомогу, лоран!

Я закінчив залишити цю конфігурацію в nginx:

upstream gitlab {
  server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket;
}


server {
  listen 80 default;         # e.g., listen 192.168.1.1:80;
  #server_name thinkstation-ubuntu;     # e.g., server_name source.example.com;
  root /home/gitlab/gitlab/public;

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  location / {
    # serve static files from defined root folder;.
    # @gitlab is a named location for the upstream fallback, see below
    try_files $uri $uri/index.html $uri.html @gitlab;
  }

  # if a file, which is not found in the root folder is requested,
  # then the proxy pass the request to the upsteam (gitlab unicorn)
  location @gitlab {
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;

    proxy_pass http://gitlab;
  }
}

І це працює! Кінцева конфігурація:

Хост Windows7: Створений інтерфейс лише для хостів, ip 192.168.56.1, налаштовано переадресацію портів: хост 8888 для гостя 80

Гість сервера Ubuntu 12.04: працює nginx, eth0 як VirtualBox NAT, eth1 лише для хоста, зі статичним ip 192.168.56.101

Ubuntu 12.04 Шпалери для робочого столу: eth0 як Virtualbox NAT, eth1 лише для хоста зі статичним ip 192.168.56.102, безпосередньо доступ до 192.168.56.101 nginx, ssh, усіх сервісів.

Дякую!


1
Я думаю, що це працює, тому що ви його визначили як listen 80 default;(без імені сервера та за замовчуванням). Таким чином, nginx відповість на все, що знаходиться на його порту 80. Якщо ви плануєте запускати інші сайти в майбутньому, використовуючи цей екземпляр nginx, вам доведеться їх визначати інакше, але поки це працює! ;)
ларан

1
Немає теми, але Лоран допоміг вам вирішити проблему, і ви опублікували власну відповідь і прийняли свою відповідь? Я думаю, ви мали б відредагувати своє запитання та включити резолюцію та відзначити його відповідь прийнятою. Дуже дивно, що хтось вам допоможе, а потім прийміть бали самостійно ...
Брайан Рей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.