我在 Mac OS X 机器上有一个 apache2 服务器,同一台机器在 Ubuntu 中虚拟运行 Gitlab。
Mac IP:192.168.0.7
Ubuntu(虚拟)IP:192.168.0.12
我希望 apache 让 gitlab.mydomain.com 转到 Ubuntu 虚拟机,而让 anyelse.mydomain.com 转到 Mac。
/private/etc/apache2/other/
我在 Mac 上添加了一个文件(gitlab.mydomain.conf) ,内容如下
<VirtualHost *:80>
ServerName gitlab.mydomain.com
ProxyPass / http://192.168.0.12
ProxyPassReverse / http://192.168.0.12
ProxyPreserveHost On
</VirtualHost>
Ubuntu 虚拟机文件上的 gitlab.yml 包含
##Gitlab settings
gitlab:
## Web server settings
host: gitlab.mydomain.com
port: 80
https: false
当我去时gitlab.mydomain.com
出现以下错误:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /users/sign_in.
Reason: DNS lookup failure for: 192.168.0.12users
但如果我去,192.168.0.12
我会看到 Gitlab 登录页面。
对于哪里出了问题您有什么想法吗?
答案1
尝试
<VirtualHost *:80>
ServerName gitlab.mydomain.com
ProxyPass / http://192.168.0.12/
ProxyPassReverse / http://192.168.0.12/
ProxyPreserveHost On
</VirtualHost>
If the first argument ends with a trailing /, the second argument
should also end with a trailing / and vice versa. Otherwise the
resulting requests to the backend may miss some needed slashes and
do not deliver the expected results.
答案2
我猜你搜索的还不够。
- 您需要编辑文件
/home/gitlab/gitlab/config/unicorn.rb
- 找到 listen 行
"#{app_dir}/tmp/sockets/gitlab.socket"
并注释掉它。取消注释行listen "192.168.0.12:80"
proxy
使用以下命令启用 apache 模块sudo a2enmod proxy
proxy_http
使用以下命令启用 apache 模块sudo a2enmod proxy_http
将其添加到您的虚拟主机
<VirtualHost *:80> ServerName gitlab.mydomain.com # Custom log file locations ErrorLog /var/log/apache2/gitlab_error.log CustomLog /var/log/apache2/gitlab_access.log combined ProxyRequests Off ProxyPreserveHost On ProxyPass / http://192.168.0.12/ <Location /> ProxyPassReverse / Order deny,allow Allow from all </Location>
重启 gitlab 和 apache
- 玩得开心。
答案3
对于来自 Google 的人来说,这是在 Ubuntu 18.04、apache 2.4.2 和 Gitlab 企业版 12.8.5 上有效的方法。我点击了以下链接使用非捆绑的 Web 服务器
跳过步骤 3,因为我的 apache 在同一台服务器上,并从步骤 5 为 Apache 2.4 下载了正确的 vhost。