我在一台运行在不同端口(80,8180)上的服务器上有gitlab和jenkins。 含义192.168.1.221:8180是jenkins,而192.168.1.221:80是gitlab。 我使用的是运行apache的另一台服务器,可以通过(使用certbot的ssl)从Web访问它们。
例如,当我执行1:1 proxypass时,一个站点就可以正常工作。詹金斯:
ProxyPass / http://192.168.1.221:8180/
ProxyPassReverse / http://192.168.1.221:8180/
现在,我想从同一个域(例如mydomain.com/jenkins/和mydomain.com/gitlab/)访问我的git和jenkins。
我尝试了proxypass,重写规则和位置等所有操作,但找不到能够使两个站点都可以从网络访问的解决方案。
我尝试过的事情,第一个也是合乎逻辑的:
ProxyPass /jenkins/ http://192.168.1.221:8180/
ProxyPassReverse /jenkins/ http://192.168.1.221:8180/
ProxyPass /gitlab/ http://192.168.1.221:80/
ProxyPassReverse /gitlab/ http://192.168.1.221:80/
不起作用。
将其移动到“位置”标记下(删除/ jenkins /和/ gitlab /)。 不起作用。
以下内容:
RewriteEngine On
RewriteRule ^/jenkins/(.*) http://192.168.1.221:8180/$1 [proxy]
ProxyPass / http://192.168.1.221:8180/
ProxyPassReverse / http://192.168.1.221:8180/
RewriteEngine On
RewriteRule ^/gitlab/(.*) http://192.168.1.221:80/$1 [proxy]
ProxyPass / http://192.168.1.221:80/
ProxyPassReverse / http://192.168.1.221:80/
将使詹金斯可以访问,但是: 1)浏览器中显示的网址看起来像1:1代理传递(mydomain.com/),有点违背了目的
2)完全无法访问Gitlab,URL mydomain.com/gitlab/将再次指向jenkins,将它们放在Location标记中只会破坏它。
第一种逻辑方法在重定向和加载资源方面存在问题。转到mydomain.com/gitlab/会将我重定向到我的登录页面网址,但会返回404,因为路径设置为mydomain.com/users/sign_in,而不是mydomain.com/gitlab/users/sign_in。手动转到mydomain.com/gitlab/users/sign_in将显示登录页面,但无法再次加载任何资源(css和javascript),它试图从mydomain(。)com / assets /而非mydomain加载资产.com / gitlab / assets/。
我尝试了很多来自堆栈溢出的建议,但似乎没有一个能解决我的问题