gitlab docker nginx反向代理到子路径

gitlab docker nginx反向代理到子路径,docker,nginx,gitlab,Docker,Nginx,Gitlab,我正在尝试将nginx设置为反向代理,以将apps.mycompany.com/gitlab路由到与nginx运行在同一服务器上的gitlab docker容器: nginx配置有: location /gitlab/ { proxy_pass http://127.0.0.1:3000/; proxy_redirect default; } 第一个http调用apps.mycompany.com/gitlab进行得很顺利,但基本上html中的所有href(例如href

我正在尝试将nginx设置为反向代理,以将apps.mycompany.com/gitlab路由到与nginx运行在同一服务器上的gitlab docker容器:

nginx配置有:

location /gitlab/ {
    proxy_pass     http://127.0.0.1:3000/;
    proxy_redirect default;
}
第一个http调用
apps.mycompany.com/gitlab
进行得很顺利,但基本上html中的所有href(例如
href:“/assets/…”
)仍然路由到
apps.mycompany.com/assets/…
,而不是
apps.mycompany.com/gitlab/assets/…

因此未找到任何资产和css文件。呈现的页面有结构,但没有样式,我甚至不知道还有什么不起作用

我对nginx了解不够,不知道我做错了什么

在nginx配置中,添加
proxy\u set\u header
选项并更改
proxy\u pass
,如下所示:

location /gitlab/ {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:3000/gitlab/;
}
GITLAB

您要查找的是GitLab中的相对URL配置

如果您的GitLab版本为8.5或更高版本,请根据您的GitLab部署类型执行以下操作之一:

DOCKER-COMPOSE部署

将环境变量
external\u url
添加到您的
docker compose.yml
文件中,示例文件:

gitlab:
    image: 'gitlab/gitlab-ce:11.5.2-ce.0'
    restart: always
    environment:
            GITLAB_OMNIBUS_CONFIG: |
                    external_url 'http://apps.mycompany.com/gitlab/'
    ports:
            - '3000:80'
然后重新启动GitLab docker:

docker compose up-d

DOCKER部署

如果您没有使用docker compose(我强烈推荐),则可以向您添加
外部url
选项
docker run
命令,示例执行:

docker运行--分离--发布3000:80--始终重新启动--env GITLAB\u OMNIBUS\u CONFIG=“external\u url”http://apps.mycompany.com/gitlab/““gitlab/gitlab ce:11.5.2-ce.0

GitLab配置文件更新-可用于各种部署

另一种方法是直接修改GitLab配置文件,但我建议对于独立的GitLab安装,而不是docker部署

/etc/GitLab/GitLab.rb中修改GitLab配置
外部url
值更改为以下值:

location /gitlab/ {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:3000/gitlab/;
}
external\u url”http://apps.mycompany.com/gitlab“

进行此更改后,您必须重新配置GitLab:

sudo gitlab ctl重新配置

然后重新启动服务:

sudo gitlab ctl重启

您可以在中找到有关GitLab配置的更多详细信息

我建议您也在docker部署中检查GitLab

请注意,Omnibus GitLab中的相对URL支持是实验性的,并且是在8.5版中引入的(对于早期版本,您需要从源代码处编译它)

在nginx配置中,添加
proxy\u set\u header
选项并更改
proxy\u pass
,如下所示:

location /gitlab/ {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:3000/gitlab/;
}
GITLAB

您要查找的是GitLab中的相对URL配置

如果您的GitLab版本为8.5或更高版本,请根据您的GitLab部署类型执行以下操作之一:

DOCKER-COMPOSE部署

将环境变量
external\u url
添加到您的
docker compose.yml
文件中,示例文件:

gitlab:
    image: 'gitlab/gitlab-ce:11.5.2-ce.0'
    restart: always
    environment:
            GITLAB_OMNIBUS_CONFIG: |
                    external_url 'http://apps.mycompany.com/gitlab/'
    ports:
            - '3000:80'
然后重新启动GitLab docker:

docker compose up-d

DOCKER部署

如果您没有使用docker compose(我强烈推荐),则可以向您添加
外部url
选项
docker run
命令,示例执行:

docker运行--分离--发布3000:80--始终重新启动--env GITLAB\u OMNIBUS\u CONFIG=“external\u url”http://apps.mycompany.com/gitlab/““gitlab/gitlab ce:11.5.2-ce.0

GitLab配置文件更新-可用于各种部署

另一种方法是直接修改GitLab配置文件,但我建议对于独立的GitLab安装,而不是docker部署

/etc/GitLab/GitLab.rb中修改GitLab配置
外部url
值更改为以下值:

location /gitlab/ {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:3000/gitlab/;
}
external\u url”http://apps.mycompany.com/gitlab“

进行此更改后,您必须重新配置GitLab:

sudo gitlab ctl重新配置

然后重新启动服务:

sudo gitlab ctl重启

您可以在中找到有关GitLab配置的更多详细信息

我建议您也在docker部署中检查GitLab


请注意,Omnibus GitLab中的相对URL支持是实验性的,并且是在8.5版中引入的(对于早期版本,您需要从源代码处编译它-)。

我的GitLab https设置:

docker-compose.yml:

web:
图片:'gitlab/gitlab ee:latest'
重新启动:始终
主机名:“gitlab.yourdomain.com”
环境:
GITLAB_综合配置:|
外部url'https://gitlab.yourdomain.com'
gitlab_rails['gitlab_shell_ssh_port']=9122
nginx['enable']=true
nginx['listen_port']=9180
nginx['listen_https']=false
端口:
- '9180:9180'
- '9122:22'
卷数:
-“/opt/gitlab/config:/etc/gitlab”
-“/opt/gitlab/logs:/var/log/gitlab”
-“/opt/gitlab/data:/var/opt/gitlab”
nginx gitlab.conf:

server {
  listen       443;
  server_name  gitlab.yourdomain.com;

  location / {
    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_pass http://127.0.0.1:9180;
  }
}

我的https gitlab设置:

docker-compose.yml:

web:
图片:'gitlab/gitlab ee:latest'
重新启动:始终
主机名:“gitlab.yourdomain.com”
环境:
GITLAB_综合配置:|
外部url'https://gitlab.yourdomain.com'
gitlab_rails['gitlab_shell_ssh_port']=9122
nginx['enable']=true
nginx['listen_port']=9180
nginx['listen_https']=false
端口:
- '9180:9180'
- '9122:22'
卷数:
-“/opt/gitlab/config:/etc/gitlab”
-“/opt/gitlab/logs:/var/log/gitlab”
-'/opt/gitlab/data:/var/opt/gi