通过 nginx 反向代理 gitbucket

通过 nginx 反向代理 gitbucket

我目前正在尝试使用以下命令使 nginx 与 gitbucket 协同工作本教程

虽然这是官方的 gitbucket wiki,但这个页面非常不完整,我需要调整一些细节Apache 指南,主要是前缀的事情,使gitbucket与nginx一起工作。

所以我的结果sites-available/gitbucket如下:

server {
    listen   80; # The default is 80 but this here if you want to change it.
    server_name mydomain.xxx;

    location /gitbucket {
        proxy_pass              http://localhost:8080/gitbucket;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout   150;
        proxy_send_timeout      100;
        proxy_read_timeout      100;
        proxy_buffers           4 32k;
        client_max_body_size    500m; # Big number is we can post big commits.
        client_body_buffer_size 128k;
    }
}

当我启用它时gitbucket,它会工作,因此http://mydomain.xxx/gitbucket会重定向到我的 gitbucket 实例,但随后 nginx 停止提供我放在我的 上的任何索引文件,而是提供我们全新安装时提供的默认索引页。禁用 gitbucket 时,将再次提供/var/www/html来自文件夹的索引。html

我尝试在 gitbucket repo 上提交工单,但没有得到满意的答复。有人能帮我解释一下这个问题吗?

提前致谢!

答案1

您链接的教程为 gitbucket 提供了一个非常具体的示例。

如果你使用 nginx 设置网站,你必须记住每个网站都有一堆设置,并且有一个逻辑可以确定什么时候哪些设置优先。这digital ocean 文章标题为“了解 Nginx 服务器和位置块选择算法”这是如何确定的。

从您在评论中解释的内容来看,您最终得到了两个站点文件。一个是默认文件,您可以在其中设置站点的常规根目录,另一个是 gitbucket 文件,其中包含 gitbucket 位置块和(这很重要)监听指令和服务器名称指令。

nginx 确定要交付哪个站点的第一步是确定要使用哪个服务器块。目前,您可能有两个具有相同定义的服务器块。您的默认块和 gitbucket 块正在监听同一服务器名称的端口 80。因此,一个块总是会覆盖另一个。

如果您希望两者同时起作用,则有以下几种选择:

  • 使用 listen 指令将任一站点设置为不同的端口。
  • 更改任一站点的服务器名称。这也可能包括子域。此方法是否有效可能取决于站点的 DNS 配置。
  • 只需在默认文件中包含来自 gitbucket 配置的位置块即可。

顾名思义,位置块仅定义特定位置的设置。它实际上不需要独立的服务器块,至少如果它是如此基本的定义,则不需要。

相关内容