如何将不同的子域请求redirect到不同的端口

我有两个应用程序,一个是www.myexample.com ,另一个是blog.myexample.com 。 我正在使用PHP和Apache

现在,我想让www.myexample.com运行在我的机器的端口82上, blog.myexample.com在83端口上运行在同一台机器上。 如何configurationApache和/或PHP脚本,以便在请求的请求正确服务?

编辑:感谢所有回应的人,但我害怕我不明白这个问题 – 我的不好!

我真正想要的是模拟一个条件,即www.myexample.com和blog.myexample.com位于不同的机器上。 所以当请求进入时,网关服务器(也是托pipewww.myexample.com的服务器)将检查这是对www.myexample.com还是对于blog.myexample.com的请求,并进行必要的重新路由。

这个怎么做? 谢谢。

我会假设你有自己的理由希望这两个网站( wwwblog )运行在不同的端口上,并在不同的进程。 如果这不是你想要的,例如你不想有两个不同的进程,那么有不同的端口可能不是你想要的:使用VirtualHost来共同承载同一个Apache + PHP实例中的两个域端口80. 否则,请继续阅读。

假设你有两个分别在localhost:82和localhost:83上侦听的apache + php进程,调用第三个仅用于apache的进程来充当反向代理。 让反向代理apache实例侦听来自Internet的端口80上的请求,并使用两个虚拟主机定义。 第一个虚拟主机定义www将把请求转发到localhost:82,而第二个虚拟主机定义blog将把请求转发到locahost:83,例如:

 NameVirtualHost *:80 # www <VirtualHost *:80> serverName www.myexample.com ProxyPass / http://localhost:82/ ProxyPassReverse / http://localhost:82/ </VirtualHost> # blog <VirtualHost *:80> serverName blog.myexample.com ProxyPass / http://localhost:83/ ProxyPassReverse / http://localhost:83/ </VirtualHost> 

我使用代理这种类型的东西。

在我的例子中,我有端口80上运行的Apache 1.3,但我需要svn仓库在Apache 2.2上运行,我不想每次都在域的末尾键入:82。 所以我做了Apache 1.3(端口80)上的代理重定向:

 <VirtualHost *:80> serverName svn.mydomain.com serverAlias svn serverAdmin my@email.com <Ifmodulee mod_proxy.c> ProxyPass / http://svn:82/ </Ifmodulee> </VirtualHost> 

在终端上运行以下行(正确指定您的域名和子域名)

 sudo nano /etc/apache2/sites-available/subdomain.domain.com.conf 

粘贴以下代码并根据需要进行更改

 <VirtualHost *:80> serverAdmin admin@domain.com serverName subdomain.domain.com serverAlias subdomain.domain.com ProxyRequests Off #ProxyPass / http://localhost:8080/ <Location /> ProxyPreserveHost On ProxyPass http://domain.com:8080/ ProxyPassReverse http://domain.com:8080/ </Location> # Uncomment the line below if your site uses SSL. #SSLProxyEngine On </VirtualHost> 

在终端上运行以下行(正确指定您的域名和子域名)

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod subdomain.domain.com.conf sudo service apache2 restart 

在我的帽子顶部:

 listn 82 listn 83 NameVirtualHost 1.2.3.4 # Use your server's IP here <VirtualHost www.myexample.com:82> # Configure www.myexample.com here </VirtualHost> <VirtualHost blog.myexample.com:83> # Configure blog.myexample.com here </VirtualHost> 

一个更完整的答案是做这样的事情,让你设置一个代理网关,这是上面宽松的描述。

serverName localhost

 <Proxy *> Order deny,allow Allow from localhost </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:10081/ ProxyPassReverse / http://localhost:10081/ ProxyPassReverseCookiePath / http://localhost:10081/