我在Windows 2008R2(64位)框中安装了RhodeCode 1.2.2。
我已经为运行在127.0.0.1:5000的RhodeCode设置了IIS 7作为代理服务器(应用程序请求路由+ URL重写)。
可以通过“https://subdomain.domain.de”访问存储库。
在存储库摘要中,克隆网址指向: https:// [用户名] @ 127.0.0.1:5000 / SomeProject
在客户端,我可以在替换时克隆存储库 “127.0.0.1:5000”与“subdomain.domain.de”。
我确实希望RhodeCode显示代理网址 (“subdomain.domain.de”)而不是127.XXX ...
我上下搜索网络,我发现的唯一一件事就是这样 Apache有一个“ProxyPreserveHost On”设置,可以解决问题。然而 我没有找到类似IIS的东西。
我可以在“production.ini”中设置某个设置 定义代理URL? 或者有人在IIS中找到了隐藏得很好的设置吗?
非常感谢任何帮助:-)
谢谢你的回答!我已经使用了ARR并设置了反向代理,我可以通过代理访问RhodeCode。但是,看起来HTTP_HOST值不会转发给paster。
在IIS中,我设置了以下服务器变量并在反向代理规则中设置它们:
<set name="HTTP_HOST" value="[subdomain.domain.de]" />
<set name="HTTP_X_FORWARDED_SERVER" value="[subdomain.domain.de]" />
<set name="HTTP_X_ORIGINAL_HOST" value="[subdomain.domain.de]" />
<set name="HTTP_X_HTTP_HOST" value="[subdomain.domain.de]" />
<set name="HTTP_X_URL_SCHEME" value="https" />
但这根本没有影响。
在链接的先前回答中,他建议将这些变量值复制回HTTP_HOST(在tomcat中,在我的情况下应该是paster)。对我来说,这看起来有点过分,与apache中的简单“ProxyPreserveHost On”相比。我觉得我在这里错过了一些东西。
干杯, Sörnt
答案 0 :(得分:2)
Itvan是正确的,这将有效。
取消注释clone_uri将保留默认的clone_uri。您可以强制clone_uri使用您的域:
clone_uri = {scheme}://{user}{pass}[subdomain.domain.de]{path}
PS:适用于版本1.3.6
答案 1 :(得分:1)
I'm working on out reverse proxying over https for rhodecode with apache on centos6 right now.
对于Apache,configuration noted by marcin of rhodecode fame是:
<VirtualHost *:80>
ServerName hg.myserver.com
ServerAlias hg.myserver.com
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
#important !
#Directive to properly generate url (clone url) for pylons
ProxyPreserveHost On
#rhodecode instance
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
#to enable https use line below
#SetEnvIf X-Url-Scheme https HTTPS=1
</VirtualHost>
对于IIS等效的ProxyPreserveHost,请参阅Application Request Routing中提供的a previously answer by a MSFT MVP。
http服务器实际上是python paste的httpserver,所以referring to the python paste documentation for httpserver(egg#Paste:http
很熟悉),没有代理配置。您必须reverse proxy in IIS(source)
我不确定为什么marcin选择建议设置反向代理而不是使用paste的httpserver支持https;但是让IIS填写请求,绑定粘贴的httpserver到127.0.0.1可能是最好的选择。
答案 2 :(得分:1)
我刚安装了RhodeCode 1.3.3并遇到了这个问题。您可以在配置文件中编辑此行以使其正常工作:
## overwrite schema of clone url
## available vars:
## scheme - http/https
## user - current user
## pass - password
## netloc - network location
## path - usually repo_name
#clone_uri = {scheme}://{user}{pass}{netloc}{path}
clone_uri = {scheme}://{user}{pass}yourdomain.com{path}