2013-04-14 88 views
1

我在使用Nginx的服务器上运行Gitlab,它在git.mysite.com上运行得很完美。但是,当我访问根域时,不是在/ usr/share/nginx/www中显示index.html文件,而是在/ home/gitlab/gitlab中显示Gitlab。Nginx将子域的内容显示为根域

我该如何解决这个问题?

默认设置(在/ etc/nginx的/网站可用/默认)

server { 
    listen 80; ## listen for ipv4; this line is default and implied 
    #listen [::]:80 default ipv6only=on; ## listen for ipv6 

    root /usr/share/nginx/www; 
    index index.php index.html index.htm; 

    server_name mysite.com; 

    location/{ 
     try_files $uri $uri/ /index.html; 
    } 

    location /doc/ { 
     alias /usr/share/doc/; 
     autoindex on; 
     allow 127.0.0.1; 
     deny all; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/www; 
    } 

    location ~ \.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 
    location ~ /\.ht { 
     deny all; 
    } 
} 

gitlab(在/ etc/nginx的/网站可用/ gitlab)

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

server { 
    listen 198.199.70.76:80 default_server; 
    server_name git.mysite.com; 
    root /home/git/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; 
    } 
} 

回答

2

您想更改您的子域以侦听端口80,而不是default_server。尝试使用这一行:代替

listen 80; 

listen 198.199.70.76:80 default_server; 
0

两个配置的端口监听80,和gitlab之一(直接从Gitlab recipe,移到主gitlab回购:gitlab.com/gitlab-org/gitlab-ce/lib/support/nginx/gitlab)是从'/'访问GitLab服务器:http://198.199.70.76:80/确实返回GitLab。

只有不解析为198.199.70.76的查询才会使用第一个配置(index.html)。
例如,如果在服务器上执行,http://localhost/将起作用。