2017-04-13 153 views
0

我试图按照https://docs.gitlab.com/omnibus/gitlab-mattermost/README.html配置Gitlab Mattermost。我正在使用非捆绑的nginx服务器,该服务器按照here所述进行配置。其余的Gitlab目前正在工作;我可以通过访问http://code.my.company.com来访问它。Gitlab Mattermost的nginx服务器配置(使用非捆绑的nginx服务器)

Mattermost可能配置正确,但我似乎无法找到任何有关如何使用Mattermost配置非绑定nginx的信息。特别是,我想知道proxy_pass应该是什么。

Gitlab sample configuration file使用proxy_pass http://gitlab-workhorse。在同一文件的顶部附近,他们将其定义为unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket。这对Gitlab本身很有效(正如我们所希望的那样),但我不知道012-用于Mattermost。

正如你在下面的nginx配置文件中看到的,我通过简单地复制/粘贴大部分正常的Gitlab nginx配置文件(包括proxy_pass http://gitlab-workhorse行)创建了nginx配置文件的Mattermost部分。毫不奇怪,这只是导致http://code.my.company.com:1337转发到正常的Gitlab,而不是Mattermost。

这里是我的/etc/nginx/sites-available/default文件(该文件中所有的评论都是我的;如果你想看到原来的意见,看the source):

## Most of this is copy/pasted from https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab 
## A few of the paths are different from the current version, 
## perhaps because the Gitlab-suggested nginx config was different when I installed Gitlab 

upstream gitlab-workhorse { 
    server unix:/var/opt/gitlab/gitlab-workhorse/socket; 
} 

map $http_upgrade $connection_upgrade_gitlab { 
    default upgrade; 
    '' close; 
} 

## Mattermost config, mostly copy/pasted from the server{} block below 
server { 
    listen 0.0.0.0:1337 default_server; 
    listen [::]:1337 default_server; 
    server_name code.my.company.com; 

    location/{ 
    client_max_body_size 0; 
    gzip off; 

    proxy_read_timeout  300; 
    proxy_connect_timeout 300; 
    proxy_redirect   off; 

    proxy_http_version 1.1; 

    proxy_set_header Host    $http_host; 
    proxy_set_header X-Real-IP   $remote_addr; 
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $connection_upgrade_gitlab; 

    proxy_pass http://gitlab-workhorse; 
    } 

} 

## normal Gitlab config 
server { 
    listen 0.0.0.0:80 default_server; 
    listen [::]:80 default_server; 
    server_name code.my.company.com; 
    server_tokens off; 
    root /opt/gitlab/embedded/service/gitlab-rails/public; 

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


    location/{ 
    client_max_body_size 0; 
    gzip off; 

    proxy_read_timeout  300; 
    proxy_connect_timeout 300; 
    proxy_redirect   off; 

    proxy_http_version 1.1; 

    proxy_set_header Host    $http_host; 
    proxy_set_header X-Real-IP   $remote_addr; 
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $connection_upgrade_gitlab; 

    proxy_pass http://gitlab-workhorse; 
    } 
} 

这里是/etc/gitlab/gitlab.rb相关部分:

external_url 'http://code.my.company.com' 
mattermost_external_url 'http://code.my.company.com:1337' 

nginx['enable'] = false 
mattermost_nginx['enable'] = false 

mattermost['gitlab_enable'] = true 
mattermost['gitlab_id'] = "HiddenForStackOverflowPost" 
mattermost['gitlab_secret'] = "HiddenForStackOverflowPost" 
mattermost['gitlab_scope'] = "" 
mattermost['gitlab_auth_endpoint'] = "http://code.my.company.com/oauth/authorize" 
mattermost['gitlab_token_endpoint'] = "http://code.my.company.com/oauth/token" 
mattermost['gitlab_user_api_endpoint'] = "http://code.my.company.com/api/v3/user" 

回答

1

下面是一个什么样的工作Mattermost nginx的配置看起来像docs一个例子:

upstream backend { 
    server 10.10.10.2:8065; 
} 

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off; 

server { 
    listen 80; 
    server_name mattermost.example.com; 

    location /api/v3/users/websocket { 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     client_max_body_size 50M; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
     proxy_set_header X-Frame-Options SAMEORIGIN; 
     proxy_buffers 256 16k; 
     proxy_buffer_size 16k; 
     proxy_read_timeout 600s; 
     proxy_pass http://backend; 
    } 

    location/{ 
     client_max_body_size 50M; 
     proxy_set_header Connection ""; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
     proxy_set_header X-Frame-Options SAMEORIGIN; 
     proxy_buffers 256 16k; 
     proxy_buffer_size 16k; 
     proxy_read_timeout 600s; 
     proxy_cache mattermost_cache; 
     proxy_cache_revalidate on; 
     proxy_cache_min_uses 2; 
     proxy_cache_use_stale timeout; 
     proxy_cache_lock on; 
     proxy_pass http://backend; 
    } 
} 

您需要用运行Mattermost的IP(或主机)和端口替换10.0.0.2:8065。如果您也想设置SSL,请查看文档here(此示例配置取自此处)。

+0

下面是我所做的:在'/ var/opt/gitlab/mattermost/config.json'中,我发现''ServiceSettings“。”ListenAddress“'为'”127.0.0.1:8065“'。我运行'卷曲127.0.0.1:8065'来测试它,并且工作 - 我得到了mattermost主页html。正如你所推荐的那样,我在配置中使用了这个IP - 上游后端{server 127.0.0.1:8065; }' 它工作!谢谢!! – pianoJames