我正在寻找一种在单个服务器上托管多个网站的方法。目前,我使用反向代理使用以下方法托管其中两个网站:
我在/ var / www / html文件夹中有一个php站点,在localhost:3015上运行了一个nodejs应用程序。我的apache2配置如下: -
<VirtualHost *:80>
ServerName site1.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://localhost:3015/
ProxyPassReverse / http://localhost:3015/
ServerName site2.example.com
</VirtualHost>
现在我还希望在以下网站上托管几个旧网站:
site1.example.com/archives/2014,13等
site2.example.com/archives/2014,13等。
在site1.example.com的情况下,我可以使用别名,因为托管的站点是一个php站点。 在我使用反向代理的第二种情况下,什么是托管php网站的最佳方式。
另外,请建议一种方法,可以轻松添加新网站,并将旧网站移动到存档文件夹。这些网站可能在django,ROR等等。
这甚至可能吗?
答案 0 :(得分:0)
这可能不是你想要的,但试一试。这是我在dev VM中使用的Apache配置的变体,它是为通配符域托管设置的。我没有专门测试过这个配置,但你应该能够调整它以满足你的需求。
这基本上告诉Apache如何查找以下网站:
site1.example.com => /var/www/html/site1/public_html
site2.example.com => /var/www/html/site1/public_html
2014.archive.site1.example.com => /var/www/html/site1/public_html/archives/2014
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
DirectoryIndex index.html index.php
RewriteEngine on
RewriteMap lowercase int:tolower
# *.example.com
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-zA-Z0-9-]+\.example\.com$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([a-zA-Z0-9-]+)\.example\.com/(.*) /var/www/html/$1/public_html/$2
# *.archive.*.example.com
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-zA-Z0-9-]+\.archive\.[a-zA-Z0-9-]+\.example\.com$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([a-zA-Z0-9-]+)\.archive\.([a-zA-Z0-9-]+)\.example\.com/(.*) /var/www/html/$2/public_html/archives/$1/$3
</VirtualHost>
如果这不是你要求的,请告诉我。
答案 1 :(得分:0)
我终于找到了一种方法来做同样的事情。您需要做的是托管不同端口的所有站点:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /archive/2014/ http://localhost:3014/
ProxyPassReverse /archive/2014/ http://localhost:3014/
ProxyPass / http://localhost:3015/
ProxyPassReverse / http://localhost:3015/
ServerName site1.example.com
</VirtualHost>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /archive/2014/ http://localhost:4014/
ProxyPassReverse /archive/2014/ http://localhost:4014/
ProxyPass / http://localhost:4015/
ProxyPassReverse / http://localhost:4015/
ServerName site2.example.com
</VirtualHost>
现在您可以在apache2中配置default.conf,如下所示:
0 * * * * php5 -q /home/curl_call.php >> /home/curl_call.txt
这适用于任何平台上的网站,目前我的site3和site4是php,site1和site2分别是node和django。您可能需要使用网址和链接稍微一点,以使一切工作完美。