使用现有的 Nginx 安装转发到 GitLab 子域
Forwarding to GitLab Subdomain with Existing Nginx Installation
我一直在关注 instructions from the GitLab wiki,但是,似乎缺少一些关键信息。在 "Using a Non-Bundled Web Server" 部分中,它从未解释我需要如何重新配置我的 Nginx 安装以将代理反向到 GitLab。
基本上,我想在 git.example.com 下安装 GitLab,但我似乎找不到适合我现有 Nginx 安装的配置设置。维基页面继续讨论配置现有 Passenger/Nginx 安装,但我没有 Passenger,所以我认为这不适用于我的情况。
我想最简单的解决方案是,如果有办法告诉 Gitlab 使用它的内置 Nginx 并只监听一个内部端口,然后让我的另一个 Nginx 转发到那个端口,但我不能'我似乎不知道如何配置 Gitlab 来处理这个问题。
如有任何帮助,我们将不胜感激。
我成功了!太激动了!
正如我所说,我试图遵循 these instructions,但我一无所获,因为它似乎缺少有关如何将现有 Nginx 安装 link 的说明Gitlab.
好吧,在页面的更下方,他们对 Using an Existing Passenger / Nginx Installation, and while at first that didn't seem like what I wanted, researching Passenger a bit made it clear that it wasn't a Ruby-only thing(their easily-found install instructions require you to install it as a ruby gem) and their instructions for Ubuntu installation 进行了更完整的解释,这使我能够相当轻松地将其集成到我现有的 Nginx 中。
从那里开始,它只是按照 wiki 中的步骤进行操作,尽管有一些更改。
- Existing Passenger/Nginx Installation section fails to mention what the previous section on non-bundled Nginx install 表示,您需要将
www-data
添加到 gitlab.rb
文件中的 web_server['external_users']
行。
- 由于我在第一次 运行 之前重新配置我的 Gitlab 安装以删除捆绑的 Nginx,
/var/log/gitlab/nginx/gitlab_access.log
处的 nginx 日志文件不存在,这导致 Nginx 运行时出错尝试启动,只需创建该空白文件并为其提供适当的 read/write 访问权限就可以让它工作得很好。
我现在非常兴奋,希望将来遇到具体问题的任何人都能遇到这个问题,Wiki 真的应该更新为简单的 remove/merge 这两个部分和 explain/link如何将 Passenger 安装到现有的 Nginx 安装中。本来可以让我避免很多困惑和浪费时间。
运行 与 Ubuntu
上现有的 Nginx 服务器
- 安装git实验室
- 编辑配置文件 /etc/gitlab/gitlab.rb 并取消注释或附加以下内容:
- nginx['enable'] = false
- 独角兽['enable'] = false
- gitlab_rails['internal_api_url'] = 'http://git.yourdomain.com'
- web_server['external_users'] = ['www-data']
- 启动捆绑的 postgres 数据库服务器
- sudo gitlab-ctl 启动 postgresql
- 重新配置
- sudo gitlab-ctl 重新配置
- 将 git 实验室的 nginx 配置文件添加到 /etc/nginx/sites-available/gitlab-example.conf 并通过 sites-enabled 启用它
- 为 nginx 启用 passenger
- 重启nginx
- sudo 服务 nginx 重启
- 启动redis
- sudo gitlab-ctl 启动redis
对于那些列出的答案不适用的人。我自己的答案是编辑 nginx.conf
并取消注释 include /etc/nginx/passenger.conf;
行。
它的缺席阻止了 nginx 对 passenger 做任何事情。
我花了几天时间才把所有事情都整理好,所以我想分享一下让一切正常进行的步骤。这是为网站安装 Nginx 并使其与现有 gitlab 存储库(使用 Nginx 的捆绑版本)一起工作的方法。我的 gitlab 存储库位于我网站的一个名为 'repos' 的子域中。
打开终端并安装 Nginx:
sudo apt-get update
sudo apt-get install nginx
编辑配置文件/etc/nginx/nginx.conf:
找到您在配置 gitlab 时需要的用户名:
就我而言,这是 'nginx':
user nginx;
在 http{ } 块中添加此行:
$include /etc/nginx/sites-enabled/*;
示例:
http{
include etc/nginx/mime.types;
include etc/nginx/sites-enabled/*;
(more stuff...)
}
编辑配置文件/etc/gitlab/gitlab.rb:
更改此行:
external_url 'GENERATED_EXTERNAL_URL'
收件人:
external_url 'http://www.example.com/repos' // (whatever your server name is)
取消注释并更改此行:
nginx['enable'] = true
收件人:
nginx['enable'] = false
取消注释并更改此行:
web_server['external_users'] = []
收件人:
web_server['external_users'] = ['nginx'] // or whatever your nginx user is called, sometimes it's 'www-data'
Nginx 需要 gitlab 的配置文件:
在 GitLab 食谱存储库中:https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/nginx 找到 'gitlab-omnibus-nginx.conf'。
将该文件放入文件夹 /etc/nginx/sites-enabled(您可能需要创建启用站点的文件夹)
编辑配置文件/etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf:
更改此行:
server_name YOUR_SERVER_FQDN
收件人:
server_name www.example.com/repos // (or whatever your server name is)
您需要更改 gitlab 所在的端口,以便网站和 git 服务器都能正常工作。
更改此行:
listen 0.0.0.0:80 default_server;
收件人:
listen 0.0.0.0:8081;
更改此行:
listen [::]:80 default_server;
收件人:
listen [::]:8081;
编辑配置文件/etc/nginx/conf.d/default.conf:
将其设为默认服务器:
listen 80 default_server;
server_name localhost;
为 gitlab 存储库添加第二个位置,并使用 proxy_pass 指向您放置 Gitlab 的端口。
我把我的Gitlab放到了子目录'repos'。数字 127.0.0.1 表示本地主机(同一台计算机):
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /repos/ {
proxy_pass http://127.0.0.1:8081;
}
运行 终端中的这些命令:
sudo gitlab-ctl reconfigure
sudo service nginx restart
您的网络服务器和 gitlab 现在应该都可以在线工作和访问了。
当用户访问您的网络服务器时,Nginx 将默认为 /usr/share/nginx/html。那里有一个默认的 .html 文件。这是您可以放置网站文件的地方。
@fillky 的 post 无法完全帮助我安装 ubuntu 18.04。这些是我让 Gitlab 工作的步骤。
对于Ubuntu 18.04(http 模式):
- 安装 Gitlab(https://about.gitlab.com/install/#ubuntu 中的第 1 步和第 2 步)
编辑配置文件 /etc/gitlab/gitlab.rb 并取消注释或附加以下内容(在此处 https://docs.gitlab.com/omnibus/settings/nginx.html#configuration 找到):
nginx['enable'] = false
独角兽['enable'] = false
gitlab_rails['internal_api_url'] = 'http://gitlab.yourdomain.com'
web_server['external_users'] = ['www-data']
重新配置 Gitlab
sudo gitlab-ctl 重新配置
为 nginx 启用 passenger(https://www.phusionpassenger.com/library/install/nginx/install/oss/bionic/ 中的第 1 步到第 3 步)
重新加载 nginx 以检查一切是否仍然有效。如果不是:google是你的朋友
sudo nginx -s reload
更改您的 nginx 配置以支持 gitlab。使用原始文档的 Vhost 步骤中的内容在 /etc/nginx/sites-enabled 中创建一个 'gitlab' 文件:
https://docs.gitlab.com/omnibus/settings/nginx.html#vhost-server-block
重新加载nginx,修改生效
sudo nginx -s reload
安装node.js(如果还没有安装)因为gitlab需要JavaScript执行
sudo apt-get 安装node.js
浏览到你的 gitlab url。系统应该会提示您输入 root gitlab 帐户的密码。在下一步中,您将能够使用该帐户登录
就是这样!如果要启用 HTTPS,请执行以下额外步骤:
- 将 /etc/gitlab/gitlab.rb 中的 'external_url' 从 http 更改为 https
更改 nginx 配置 /etc/nginx/sites-enabled/gitlab 以使用 ssl
听 0.0.0.0:443 ssl;
听 [::]:443 ipv6only=on ssl;
SSL 开启;
ssl_certificate #link 到你的 public ssl 证书
ssl_certificate_key #link 到你的 ssl 私钥
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers 开;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout5m;
重新配置gitlab
sudo gitlab-ctl 重新配置
重新加载 nginx
sudo nginx -s reload
根据@cyberchis 的回答,我简化了流程,我已经完成了两次相同的设置。我希望它也适合你。
检查nginx的用户
1.1。用 nano /etc/nginx/nginx.conf
.
打开 nginx.conf
1.2。检查第一个。第 user www-data;
行,这里的用户是 www-data
.
编辑gitlab的external_url
2.1。用 nano /etc/gitlab/gitlab.rb
.
打开 gitlab.rb
2.2。将行 external_url 'GENERATED_EXTERNAL_URL'
编辑为 external_url 'http://gitlab.yourdomain.com'
.
2.3。取消注释并将 nginx['enable'] = true
行更改为 nginx['enable'] = false
.
2.4。取消注释并将行 web_server['external_users'] = []
更改为 web_server['external_users'] = ['www-data']
.
为gitlab添加配置文件
3.1。从 gitlab repository.
下载 gitlab-omnibus-nginx.conf
3.2。转到文件所在的目录,并使用 cp /directory-to-this-file/gitlab-omnibus-nginx.conf /etc/nginx/sites-enabled
.
将此文件复制到 nginx
3.3。使用 nano /etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf
.
打开此文件
3.4。将此行 listen 0.0.0.0:80 default_server;
更改为 listen 0.0.0.0:7001;
// gitlab 运行s on port 7001
3.5。将此行 listen [::]:80 default_server;
更改为 listen [::]:7001;
// gitlab 运行s on port 7001
3.6。将此行 server_name YOURSERVER_FQDN
更改为 server_name www.yourdomain.com
.
配置nginx
4.1。用 nano /etc/nginx/nginx.conf
.
打开 nginx.conf
4.2。添加此配置
http {
...
server {
listen 80;
server_name gitlab.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7001;
}
}
}
重新配置gitlab并重新加载nginx
5.1。 sudo gitlab-ctl reconfigure
5.2。 sudo systemctl reload nginx
将防火墙配置为导出端口 7001(可选)
由于gitlab 运行s 在我的本地服务器上,因此必须允许端口7001 从外部访问。启用它的最简单方法是 运行 ufw allow 7001
.
现在,您应该访问您的子域 gitlab.yourdomain.com 上的 gitlab 运行s。
我一直在关注 instructions from the GitLab wiki,但是,似乎缺少一些关键信息。在 "Using a Non-Bundled Web Server" 部分中,它从未解释我需要如何重新配置我的 Nginx 安装以将代理反向到 GitLab。
基本上,我想在 git.example.com 下安装 GitLab,但我似乎找不到适合我现有 Nginx 安装的配置设置。维基页面继续讨论配置现有 Passenger/Nginx 安装,但我没有 Passenger,所以我认为这不适用于我的情况。
我想最简单的解决方案是,如果有办法告诉 Gitlab 使用它的内置 Nginx 并只监听一个内部端口,然后让我的另一个 Nginx 转发到那个端口,但我不能'我似乎不知道如何配置 Gitlab 来处理这个问题。
如有任何帮助,我们将不胜感激。
我成功了!太激动了!
正如我所说,我试图遵循 these instructions,但我一无所获,因为它似乎缺少有关如何将现有 Nginx 安装 link 的说明Gitlab.
好吧,在页面的更下方,他们对 Using an Existing Passenger / Nginx Installation, and while at first that didn't seem like what I wanted, researching Passenger a bit made it clear that it wasn't a Ruby-only thing(their easily-found install instructions require you to install it as a ruby gem) and their instructions for Ubuntu installation 进行了更完整的解释,这使我能够相当轻松地将其集成到我现有的 Nginx 中。
从那里开始,它只是按照 wiki 中的步骤进行操作,尽管有一些更改。
- Existing Passenger/Nginx Installation section fails to mention what the previous section on non-bundled Nginx install 表示,您需要将
www-data
添加到gitlab.rb
文件中的web_server['external_users']
行。 - 由于我在第一次 运行 之前重新配置我的 Gitlab 安装以删除捆绑的 Nginx,
/var/log/gitlab/nginx/gitlab_access.log
处的 nginx 日志文件不存在,这导致 Nginx 运行时出错尝试启动,只需创建该空白文件并为其提供适当的 read/write 访问权限就可以让它工作得很好。
我现在非常兴奋,希望将来遇到具体问题的任何人都能遇到这个问题,Wiki 真的应该更新为简单的 remove/merge 这两个部分和 explain/link如何将 Passenger 安装到现有的 Nginx 安装中。本来可以让我避免很多困惑和浪费时间。
运行 与 Ubuntu
上现有的 Nginx 服务器- 安装git实验室
- 编辑配置文件 /etc/gitlab/gitlab.rb 并取消注释或附加以下内容:
- nginx['enable'] = false
- 独角兽['enable'] = false
- gitlab_rails['internal_api_url'] = 'http://git.yourdomain.com'
- web_server['external_users'] = ['www-data']
- 启动捆绑的 postgres 数据库服务器
- sudo gitlab-ctl 启动 postgresql
- 重新配置
- sudo gitlab-ctl 重新配置
- 将 git 实验室的 nginx 配置文件添加到 /etc/nginx/sites-available/gitlab-example.conf 并通过 sites-enabled 启用它
- 为 nginx 启用 passenger
- 重启nginx
- sudo 服务 nginx 重启
- 启动redis
- sudo gitlab-ctl 启动redis
对于那些列出的答案不适用的人。我自己的答案是编辑 nginx.conf
并取消注释 include /etc/nginx/passenger.conf;
行。
它的缺席阻止了 nginx 对 passenger 做任何事情。
我花了几天时间才把所有事情都整理好,所以我想分享一下让一切正常进行的步骤。这是为网站安装 Nginx 并使其与现有 gitlab 存储库(使用 Nginx 的捆绑版本)一起工作的方法。我的 gitlab 存储库位于我网站的一个名为 'repos' 的子域中。
打开终端并安装 Nginx:
sudo apt-get update
sudo apt-get install nginx
编辑配置文件/etc/nginx/nginx.conf:
找到您在配置 gitlab 时需要的用户名: 就我而言,这是 'nginx':
user nginx;
在 http{ } 块中添加此行:
$include /etc/nginx/sites-enabled/*;
示例:
http{
include etc/nginx/mime.types;
include etc/nginx/sites-enabled/*;
(more stuff...)
}
编辑配置文件/etc/gitlab/gitlab.rb:
更改此行:
external_url 'GENERATED_EXTERNAL_URL'
收件人:
external_url 'http://www.example.com/repos' // (whatever your server name is)
取消注释并更改此行:
nginx['enable'] = true
收件人:
nginx['enable'] = false
取消注释并更改此行:
web_server['external_users'] = []
收件人:
web_server['external_users'] = ['nginx'] // or whatever your nginx user is called, sometimes it's 'www-data'
Nginx 需要 gitlab 的配置文件:
在 GitLab 食谱存储库中:https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/nginx 找到 'gitlab-omnibus-nginx.conf'。 将该文件放入文件夹 /etc/nginx/sites-enabled(您可能需要创建启用站点的文件夹)
编辑配置文件/etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf:
更改此行:
server_name YOUR_SERVER_FQDN
收件人:
server_name www.example.com/repos // (or whatever your server name is)
您需要更改 gitlab 所在的端口,以便网站和 git 服务器都能正常工作。
更改此行:
listen 0.0.0.0:80 default_server;
收件人:
listen 0.0.0.0:8081;
更改此行:
listen [::]:80 default_server;
收件人:
listen [::]:8081;
编辑配置文件/etc/nginx/conf.d/default.conf:
将其设为默认服务器:
listen 80 default_server;
server_name localhost;
为 gitlab 存储库添加第二个位置,并使用 proxy_pass 指向您放置 Gitlab 的端口。 我把我的Gitlab放到了子目录'repos'。数字 127.0.0.1 表示本地主机(同一台计算机):
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /repos/ {
proxy_pass http://127.0.0.1:8081;
}
运行 终端中的这些命令:
sudo gitlab-ctl reconfigure
sudo service nginx restart
您的网络服务器和 gitlab 现在应该都可以在线工作和访问了。 当用户访问您的网络服务器时,Nginx 将默认为 /usr/share/nginx/html。那里有一个默认的 .html 文件。这是您可以放置网站文件的地方。
@fillky 的 post 无法完全帮助我安装 ubuntu 18.04。这些是我让 Gitlab 工作的步骤。
对于Ubuntu 18.04(http 模式):
- 安装 Gitlab(https://about.gitlab.com/install/#ubuntu 中的第 1 步和第 2 步)
编辑配置文件 /etc/gitlab/gitlab.rb 并取消注释或附加以下内容(在此处 https://docs.gitlab.com/omnibus/settings/nginx.html#configuration 找到):
nginx['enable'] = false
独角兽['enable'] = false
gitlab_rails['internal_api_url'] = 'http://gitlab.yourdomain.com'
web_server['external_users'] = ['www-data']
重新配置 Gitlab
sudo gitlab-ctl 重新配置
为 nginx 启用 passenger(https://www.phusionpassenger.com/library/install/nginx/install/oss/bionic/ 中的第 1 步到第 3 步)
重新加载 nginx 以检查一切是否仍然有效。如果不是:google是你的朋友
sudo nginx -s reload
更改您的 nginx 配置以支持 gitlab。使用原始文档的 Vhost 步骤中的内容在 /etc/nginx/sites-enabled 中创建一个 'gitlab' 文件:
https://docs.gitlab.com/omnibus/settings/nginx.html#vhost-server-block
重新加载nginx,修改生效
sudo nginx -s reload
安装node.js(如果还没有安装)因为gitlab需要JavaScript执行
sudo apt-get 安装node.js
浏览到你的 gitlab url。系统应该会提示您输入 root gitlab 帐户的密码。在下一步中,您将能够使用该帐户登录
就是这样!如果要启用 HTTPS,请执行以下额外步骤:
- 将 /etc/gitlab/gitlab.rb 中的 'external_url' 从 http 更改为 https
更改 nginx 配置 /etc/nginx/sites-enabled/gitlab 以使用 ssl
听 0.0.0.0:443 ssl;
听 [::]:443 ipv6only=on ssl; SSL 开启; ssl_certificate #link 到你的 public ssl 证书 ssl_certificate_key #link 到你的 ssl 私钥 ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers 开; ssl_session_cache shared:SSL:10m; ssl_session_timeout5m;重新配置gitlab
sudo gitlab-ctl 重新配置
重新加载 nginx
sudo nginx -s reload
根据@cyberchis 的回答,我简化了流程,我已经完成了两次相同的设置。我希望它也适合你。
检查nginx的用户
1.1。用
打开 nginx.confnano /etc/nginx/nginx.conf
.1.2。检查第一个。第
user www-data;
行,这里的用户是www-data
.编辑gitlab的external_url
2.1。用
打开 gitlab.rbnano /etc/gitlab/gitlab.rb
.2.2。将行
external_url 'GENERATED_EXTERNAL_URL'
编辑为external_url 'http://gitlab.yourdomain.com'
.2.3。取消注释并将
nginx['enable'] = true
行更改为nginx['enable'] = false
.2.4。取消注释并将行
web_server['external_users'] = []
更改为web_server['external_users'] = ['www-data']
.为gitlab添加配置文件
3.1。从 gitlab repository.
下载 gitlab-omnibus-nginx.conf3.2。转到文件所在的目录,并使用
将此文件复制到 nginxcp /directory-to-this-file/gitlab-omnibus-nginx.conf /etc/nginx/sites-enabled
.3.3。使用
打开此文件nano /etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf
.3.4。将此行
listen 0.0.0.0:80 default_server;
更改为listen 0.0.0.0:7001;
// gitlab 运行s on port 70013.5。将此行
listen [::]:80 default_server;
更改为listen [::]:7001;
// gitlab 运行s on port 70013.6。将此行
server_name YOURSERVER_FQDN
更改为server_name www.yourdomain.com
.配置nginx
4.1。用
打开 nginx.confnano /etc/nginx/nginx.conf
.4.2。添加此配置
http {
...
server {
listen 80;
server_name gitlab.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7001;
}
}
}
重新配置gitlab并重新加载nginx
5.1。
sudo gitlab-ctl reconfigure
5.2。
sudo systemctl reload nginx
将防火墙配置为导出端口 7001(可选)
由于gitlab 运行s 在我的本地服务器上,因此必须允许端口7001 从外部访问。启用它的最简单方法是 运行
ufw allow 7001
.
现在,您应该访问您的子域 gitlab.yourdomain.com 上的 gitlab 运行s。