我目前正在尝试使用以下命令使 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 配置的位置块即可。
顾名思义,位置块仅定义特定位置的设置。它实际上不需要独立的服务器块,至少如果它是如此基本的定义,则不需要。