Назад | Перейти на главную страницу

nginx, gitlab, поддомен

Я установил gitlab на виртуальную машину ubuntu (12.04) в виртуальном ящике на моем NAS (в Windows 7)

Имя хоста этой машины - vubuntu. Мой маршрутизатор (помидор v1.28) настроен на использование домена .lan.

На моей рабочей станции я могу успешно пропинговать виртуальную машину, используя адрес vubuntu.lan

Конфигурационный файл gitlab в nginx такой же, как и в установочном документе, за исключением того, что я изменил параметры listen и server_name:

# Maintainer: @randx
# App Version: 4.0

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

server {
  listen 192.168.0.5:80;         # e.g., listen 192.168.1.1:80;
  server_name gitlab.vubuntu;     # 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;
  }
}

Проблема в том, что когда я получаю доступ http: //gitlab.vubuntu.lan/ в моем браузере он говорит, что не может найти страницу.

Но если я получу доступ http: //vubuntu.lan/, У меня есть страница gitlab.

Как я могу получить доступ к gitlab только с помощью поддомена?

Спасибо!

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

Во-вторых, похоже, что nginx прослушивает все запросы на этом IP-адресе, независимо от их адреса, потому что у вас есть только один блок конфигурации. Из этот вопрос, вы можете видеть, что nginx смотрит только на заголовки хоста, чтобы определить поддомен после соединение установлено. Если вы добавите еще один блок для server_name vubuntu;, вы больше не сможете попасть на сайт gitlab, перейдя на vubuntu.lan.