使用 Apache 进行 GitLab 重定向

使用 Apache 进行 GitLab 重定向

我正在努力在 RHEL 7 上使用 Apache 2.4 配置 GitLab 8。

到目前为止,我有两个不令人满意的选择:要么我使用以下 Apache 配置文件并使 GitLab 顺利运行,但其他所有应用程序都无法访问:

<VirtualHost *:80>
  ServerName server_name

  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  ProxyPass        / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
  ProxyPassReverse / http://localhost:8081/

  <Location />
    Require all granted
  </Location>                                       

  # Custom log file locations
  ErrorLog  /var/log/httpd/gitlab_error.log
  CustomLog /var/log/httpd/gitlab_access.log combined
</VirtualHost>

或者我尝试以下操作,并且其他一切正常,我可以访问 GitLab 登录页面(通过http://server_name/gitlab/users/sign_in),但是在尝试连接到时失败http://server_name/[stuff],而无需/gitlab

<VirtualHost *:80>
  ServerName server_name

  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  ProxyPass        /gitlab http://localhost:8080/
  ProxyPassReverse /gitlab http://localhost:8080/
  ProxyPassReverse /gitlab http://localhost:8081/

  <Location /gitlab>
    Require all granted
  </Location>

  # Custom log file locations
  ErrorLog  /var/log/httpd/gitlab_error.log
  CustomLog /var/log/httpd/gitlab_access.log combined
</VirtualHost>

我远不是 Apache 专家,所以我可能忽略了一些明显的问题,但我无法确定这里出了什么问题。

任何帮助将不胜感激!

编辑:

我更改了我的 Apache 配置以将内容重定向到8088端口:

<VirtualHost *:8088>
  ServerName localhost
  ServerAlias server-rd

  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  ProxyPass        / http://localhost:8080
  ProxyPassReverse / http://localhost:8080
  ProxyPassReverse / http://localhost:8081

  <Location />
    Require all granted
  </Location>

  # Custom log file locations                                                                                                                                                               
  ErrorLog  /var/log/httpd/gitlab_error.log
  CustomLog /var/log/httpd/gitlab_access.log combined
</VirtualHost>

我还在8088SELinux 中启用了端口。

其他应用程序运行良好,但我仍然无法访问 GitLab,我的浏览器出现“无法连接”错误。

我尝试连接telnet,只是为了看看:

telnet localhost 8088
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /
<html><body>You are being <a href="http://localhost:8080/users/sign_in">redirected</a>.</body></html>Connection closed by foreign host.

所以它有点起作用了,问题似乎出在这第一步之后。我尝试使用以下命令获取网页wget

wget http://localhost:8088
--2015-11-06 16:16:58--  http://localhost:8088/
Résolution de localhost (localhost)... ::1, 127.0.0.1
Connexion vers localhost (localhost)|::1|:8088...connecté.
requête HTTP transmise, en attente de la réponse...302 Found
Emplacement: http://localhost:8088/users/sign_in [suivant]
--2015-11-06 16:16:58--  http://localhost:8088/users/sign_in
Reusing existing connection to [localhost]:8088.
requête HTTP transmise, en attente de la réponse...502 Proxy Error
2015-11-06 16:16:58 ERREUR 502: Proxy Error.

抱歉,有些内容是法语的,但至少最重要的内容显示得很清楚:ERREUR 502: Proxy Error.

我检查过,mod_proxy已安装并启用,所以我不知道下一步该做什么。

答案1

我建议您为 GitLab 使用单独的 VHost。

如果您不能使用子域名或其他 IP 地址,请对 gitlab 使用不同的端口。

我并不是说这不能按照你想要的方式正确配置,但它会导致通过 Web 和 git 客户端访问时出现很多问题。

相关内容