如何将不同的子域请求重定向到不同的端口

Gra*_*ton 17 apache

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

现在,我想www.myexample.com在我的机器的端口82和blog.myexample.com同一台机器上的端口83上运行.如何配置apache和/或PHP脚本,以便在正确提供请求请求时?

编辑:感谢所有回复的人,但我担心我不明白这个问题 - 我的坏!

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

这该怎么做?谢谢.

vla*_*adr 35

我将假设您有自己的理由希望这两个站点(wwwblog)在不同的端口上运行 - 并且在不同的进程中.如果这不是您想要的,例如您不希望有两个不同的进程,那么拥有不同的端口可能不是您想要的:使用VirtualHost相反,共同托管端口上相同的apache + php实例中的两个域80. 否则,请继续阅读.

假设您的两个apache + php进程分别在localhost:82和localhost:83上进行侦听,请启动第三个仅限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>
Run Code Online (Sandbox Code Playgroud)


Gla*_*vić 5

我使用代理来处理这类事情.

在我的例子中,我在端口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

  <IfModule mod_proxy.c>
    ProxyPass / http://svn:82/
  </IfModule>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)