我有两个应用程序,一个是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的请求,并进行必要的重新路由。 /强>
怎么做?谢谢。
答案 0 :(得分:35)
我将假设您有自己的理由希望这两个站点(www
和blog
)在不同的端口上运行 - 并且在不同的进程中运行。如果这不是您的意图,例如您不希望有两个不同的进程,然后拥有不同的端口可能不是您想要的:改为使用VirtualHost
,在端口80上的同一个apache + php实例中共同托管两个域。否则,请继续阅读。
假设您的两个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>
答案 1 :(得分: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>
答案 2 :(得分:3)
在终端上运行以下行(正确指定您的域名和子域名)
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
答案 3 :(得分:0)
脱离我的帽子:
Listen 82
Listen 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>
答案 4 :(得分:0)
对此更完整的答案是做一些这样的事情,允许你设置一个代理网关,这是上面所说的。
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/