如何将 GitLab 放在 nginx 后面

Posted

技术标签:

【中文标题】如何将 GitLab 放在 nginx 后面【英文标题】:How to place GitLab behind nginx 【发布时间】:2021-04-04 12:35:02 【问题描述】:

我刚得到一个 Raspberry Pi 4B,我想在上面放置 Nextcloud 和 Gitlab 服务器。

使用instructions 我能够在我的 RPI4 上成功安装 GitLab。

作为第二步,我决定安装 nginx,因为我想在 RPI4 上运行不止一台服务器。

我关注了instructions并将gitlab-omnibus-nginx.conf添加到我的

/etc/nginx/modules-enabled/

当我尝试重新启动我的 nginx 时,使用 sudo nginx -t 时出现错误:

nginx: [emerg] "upstream" directive is not allowed here in /etc/nginx/modules-enabled/gitlab-omnibus-nginx.conf:19
nginx: configuration file /etc/nginx/nginx.conf test failed

我相信问题不存在,因为如果我提交这一行,我就会得到

nginx: [emerg] "server" directive is not allowed here in /etc/nginx/modules-enabled/gitlab-omnibus-nginx.conf:23
nginx: configuration file /etc/nginx/nginx.conf test failed

我的 /etc/nginx/nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events 
    worker_connections 768;


http 
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

【问题讨论】:

【参考方案1】:

它看起来 /etc/nginx/modules-enabled/gitlab-omnibus-nginx.conf 中的示例不是有效的 nginx 配置文件,而只是一个 sn-p。 upstreamserver 块需要嵌套在 nginx 配置文件的 http 块中。

【讨论】:

我发现了问题。你是对的,它与http有关。 *.conf 的包含两次,一个带有 http 块,一个没有。

以上是关于如何将 GitLab 放在 nginx 后面的主要内容,如果未能解决你的问题,请参考以下文章

通过 Nginx 代理为 Gitlab 服务器克隆的 Git 不起作用

Gitlab 配置问题:: NGINX 独角兽端口冲突

git本地仓库连接gitlab配置密钥以及实战应用

Gitlab:运行独角兽的问题,Resque with Passenger/Nginx

gitlab构建

尝试将现有 git 项目上传到 gitlab 时如何解决“预接收挂钩被拒绝”错误?