2

Я пытаюсь настроить запуск gitlab в гостевой системе Ubuntu 12.04 с хостом Windows7. Я могу ssh гостя с помощью перенаправления портов и получить доступ к серверу nginx с помощью перенаправления портов (8888 на хосте - 80 на гостевой, поэтому localhost:8888 на хосте попадает на сервер nginx на гостевой), но имя_сервера в файле конфигурации nginx:доставляет мне неприятности Что такое правильное прослушивание и имя_сервера, что примет nginx?

Гость имеет интерфейс NAT в 10.0.2.15 и интерфейс Host-Only в 192.168.56.101, статический.

Спасибо!

РЕДАКТИРОВАТЬ: Поскольку хост использует статический IP-адрес, я не могу использовать мостовой режим для гостя Ubuntu, поэтому я должен придерживаться только Host-Only и Port Forwarding. При этом я могу получить доступ к серверу nginx в гостевой системе, но имя_сервера все еще неверно, так как я должен использовать localhost: 8888 на хосте Windows и перенаправить его на порт 80 в гостевой системе. Каким должно быть имя_сервера?

2 ответа2

2

nginx проверит имя, указанное в URL, чтобы добраться до сервера, и сравнит его с именем сервера. Вы должны использовать имя хоста гостевой машины для доступа к нему и использовать его как имя сервера. Другой способ - использовать локальный файл DNS или hosts для предоставления правильного IP-адреса для имени хоста вашей гостевой системы (или любого другого URI - например, веб-сайта в разработке) и использовать это имя хоста или uri в качестве имени сервера.

Чтобы использовать сервер на гостевой системе, я бы предложил использовать режим моста вместо NAT, чтобы вам не нужно было переадресовывать порт и избежать множества мелких сложностей. (Obs: я не говорю, что вы не можете работать с 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 с Host-only, со статическим ip 192.168.56.101

Ubuntu 12.04 Desktop: eth0 как Virtualbox NAT, eth1 с Host-only со статическим ip 192.168.56.102, прямой доступ к 192.168.56.101 nginx, ssh, всем сервисам.

Спасибо!

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