由IIS 7代理的RhodeCode

时间:2011-10-22 22:39:36

标签: iis-7

我在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

3 个答案:

答案 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 httpserveregg#Paste:http很熟悉),没有代理配置。您必须reverse proxy in IISsource

我不确定为什么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}