为什么可以从多个子域访问 Gitlab 实例?

Why is the Gitlab instance accessible from multiple subdomains?

我在 Digital Ocean 上有一个 ubuntu 14.04 服务器,我是 运行 一个 Gitlab 实例,可以从 repo.mydomain.com 访问 我想设置一个 toran 实例,它必须可以从 toran.mydomain.com

访问

但是,我注意到对于指向服务器的每个子域,都会显示 Gitlab 登录页面。因此,当我浏览到 toran.mydomain.com 甚至 test.mydomain.com 时,它会显示 Gitlab 页面。我该如何解决这个问题?

Gitlab 配置

我修改了一些gitlab的原始配置,一个重要的修改是使用我的'own' nginx实例来代替实例中的构建,如下this guide.

我的gitlab配置(我使用了虚拟值)如下:

external_url 'http://repo.mydomain.com'

 gitlab_rails['gitlab_email_from'] = 'emailhere'
 gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

 gitlab_rails['db_adapter'] = "postgresql"
 gitlab_rails['db_encoding'] = "unicode"
 gitlab_rails['db_database'] = "thdbname"
# gitlab_rails['db_pool'] = 10
 gitlab_rails['db_username'] = "theuser"
 gitlab_rails['db_password'] = "thepass"
 gitlab_rails['db_host'] = "localhost"
 gitlab_rails['db_port'] = 1337

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.mandrillapp.com"
 gitlab_rails['smtp_port'] = 587
 gitlab_rails['smtp_user_name'] = "emailhere"
 gitlab_rails['smtp_password'] = "ojojowij"
 gitlab_rails['smtp_domain'] = "domainhere"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true

 postgresql['enable'] = false

 web_server['external_users'] = ['www-data']

 nginx['enable'] = false

gitlab的nginx配置如下:

server {
  listen *:80;
  server_name repo.mydomain.com;
  server_tokens off;
  root /opt/gitlab/embedded/service/gitlab-rails/public;

  client_max_body_size 250m;

  access_log  /var/log/gitlab/nginx/gitlab_access.log;
  error_log   /var/log/gitlab/nginx/gitlab_error.log error;

  # Ensure Passenger uses the bundled Ruby version
  passenger_ruby /opt/gitlab/embedded/bin/ruby;

  # Correct the $PATH variable to included packaged executables
  passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";

  # Make sure Passenger runs as the correct user and group to
  # prevent permission issues
  passenger_user git;
  passenger_group git;

  # Enable Passenger & keep at least one instance running at all times
  passenger_enabled on;
  passenger_min_instances 1;

  error_page 502 /502.html;
}

Toran 配置

 server {
    #listen 8000;
    listen *:8000;
    server_name toran.mydomain.com;
    root /var/www/toran/web;
    #index index.html index.htm;

    access_log  /var/log/toran/nginx/toran_access.log;
    error_log   /var/log/toran/nginx/toran_error.log error;

    location / {
        try_files $uri /app.php$is_args$args;
    }
 }

不是Gitlab,更多的是Nginx相关。请看这个答案:Why is nginx responding to any domain name?

使 Toran 服务器阻止侦听端口 80:

server {
  listen 80;
  ...
}