2012-06-26 57 views
0

這裏是場景。IIS 7.5 ARR/URL ReWrite2 ReversProxy到虛擬機上的Apache

服務器是Win2k8,運行IIS 7.5。我安裝了ARR和URL Rewrite2。

我有一個運行最新的Ubuntu服務器的虛擬框。 Apache,mySQL,PHP都已安裝。

我有配置爲反向代理服務器IIS,並已經建立了URL改寫爲這樣的:

<rewrite> 
     <rules> 
      <rule name="ReverseProxyInboundRule1" stopProcessing="false"> 
       <match url="(.*)" /> 
       <action type="Rewrite" url="http://192.168.1.17/{R:1}" /> 
      </rule> 
     </rules> 
    </rewrite> 

我已經驗證了http://dev.o7t.in正確地被路由到配置的站點在Apache中的虛擬機,但是,http://wp.o7t.in被引導到相同的確切位置。下面是來自Apache的兩個站點的配置:

開發:

# NameVirtualHost *:80 

<VirtualHost *> 
    ServerName devo7tin 
    ServerAlias dev.o7t.in 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/dev/ 
    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/dev/> 
      Options -Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

</VirtualHost> 

WP:

# NameVirtualHost *:80 

<VirtualHost *> 
    ServerName wpo7tin 
    ServerAlias wp.o7t.in 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/wordpress/ 
    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/wordpress/> 
      Options -Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

</VirtualHost> 

和了NameVirtualHost在ports.conf已配置

我所注意到的是主機頭,總是回覆到虛擬機的IP地址(在本例中爲192.168.1.17),並完全忽略所請求的主機。

所以....我怎麼能解決這個問題,並通過我的虛擬機正確的HTTP_HOST頭?

回答

3

我說得對。這是一個IIS的東西不發送HTTP_HOST頭。當然,他們爲什麼要張貼任何地方,但默認情況下禁用顯然ARR,但是,它可以通過啓用:

appcmd.exe set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost 

配置此,它現在的作品!

+1

謝謝。 Appcmd位於「%windir%\ system32 \ inetsrv \」中 – geekinit