2011-10-22 67 views
2

我在Windows 2008R2(64Bit)盒子上安裝了RhodeCode 1.2.2。由IIS代理的RhodeCode 7

我已經爲運行在127.0.0.1:5000的RhodeCode設置了IIS 7作爲代理服務器(應用程序請求路由+ URL重寫)。

存儲庫可通過「https://subdomain.domain.de」訪問。

在庫綜上所述,克隆URL指向: 的https:// [用戶名] @ 127.0.0.1:5000/SomeProject

在客戶端,更換 時,我可以克隆庫「 「127.0.0.1:5000」與「subdomain.domain.de」。

我肯定會喜歡的RhodeCode顯示代理URL (「subdomain.domain.de」),而不是127.XXX ...

我在網上搜索上下我唯一發現,是那個 Apache有一個「ProxyPreserveHost開」的設置,這個技巧。然而 我沒有發現任何類似的IIS。

在「production.ini」中,我可以定義代理網址 嗎? 還是有人在IIS中找到了隱藏的設置?

任何幫助深表感謝:-)


謝謝您的回答!我已經使用ARR並設置了反向代理,我可以通過代理訪問RhodeCode。但是,它看起來像HTTP_HOST值不會被轉發給播放器。

在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中,應該在我的情況下是貼子)。對我來說,這看起來有點過分了,與apache中的一個簡單的「ProxyPreserveHost On」比較。我有這種感覺,我錯過了一些東西。

乾杯, Sörnt

回答

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> 

對於ProxyPreserveHost的IIS equivilent,見Application Request Routing,這是在提供a previously answer by a MSFT MVP

http服務器實際上是python粘貼的httpserver,所以referring to the python paste documentation for httpserveregg#Paste:http是熟悉的),沒有代理配置。您必須reverse proxy in IISsource

我不確定爲什麼marcin選擇建議設置反向代理服務器,而不是使用https的http粘貼支持;但有IIS字段的請求,並將粘貼的httpserver綁定到127.0.0.1可能是最佳選擇。

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} 
+1

你刪除的部分?這些被默認註釋掉了,不是嗎? – metasim

+0

@SimeonFitch對不起,這很長一段時間,但因爲我沒有電子郵件通知,所以我沒有看到你的問題。我更新了答案,以便更清楚。 – ltvan

2

Itvan是正確的,那將起作用。

取消clone_uri將取消默認的clone_uri。您可以強制clone_uri通過具有線使用您的域:

clone_uri = {scheme}://{user}{pass}[subdomain.domain.de]{path} 

PS:工程於版本1.3.6

+0

一旦你得到了代表,使用評論回答其他答案;) –