Apache同域多虚拟主机

时间:2016-08-26 08:57:30

标签: apache

我目前正在尝试设置我的Apache配置。 我有一个IP(例如:10.10.10.10)和一个域(例如:www.mydomain.com)。

此服务器目前托管2个站点,每个站点都有自己的Apache实例和自己的conf和php.ini:

/appli/projects/project1/apache_2.4/conf/project1.conf =>网站1

/appli/projects/project2/apache_2.4/conf/project2.conf =>网站2

project1.conf 设置如此(与SSL的443相同):

<VirtualHost 10.10.10.10:80> DocumentRoot /appli/projects/project1/apache_2.4/htdocs/project1folder/ ServerName mydomain.com </virtualHost>

project2.conf 设置如此(与SSL的453相同):

<VirtualHost 10.10.10.10:90> DocumentRoot /appli/projects/project2/apache_2.4/htdocs/project2folder/ ServerName mydomain.com </virtualHost>

所以当我连接到&#34; mydomain.com&#34;我要去&#34; Site 1&#34;但我必须点击mydomain.com:453才能访问&#34; Site 2&#34;这不是很好......

我想有类似的东西:

mydomain.com/site1 =&gt; &#34;网站1&#34; (或site1.mydomain.com

mydomain.com/site2 =&gt; &#34;网站2&#34; (或site2.mydomain.com

我想让mydomain.com点击&#34;网站1&#34;。

不幸的是,因为每个站点都有自己的Apache实例,所以我不知道如何设置它们。

最后但不是最少我想知道是否可以在多个Apache实例上共享PHP(Apache)SESSION,或者如果我必须在域中使用COOKIES在网站之间分享信息。

我不知道它是否真的很清楚,只要问你是否需要更多的信息。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

我的建议如下:

文件结构:

htdocs/
    site1
        ...files...
    site2
        ...files...

Apache vhost:

<VirtualHost  10.10.10.10:80>
    DocumentRoot /appli/projects/project1/apache_2.4/htdocs/
    ServerName  example.com
</virtualHost>

...然后对SSL-vhost执行相同的操作。

现在,您可以使用http://example.com/site1http://example.com/site2,也可以使用相同的https。

如果您开始使用不同的端口(默认值为80和443以外的任何端口,则需要显式写入端口名称才能访问站点,或设置反向代理(增加额外的复杂性而无实际增益)

您甚至可以在vhost中为site1site2定义具体规则。

每个站点的配置:

<VirtualHost  10.10.10.10:80>
    DocumentRoot /appli/projects/project1/apache_2.4/htdocs/
    ServerName  example.com

    <Directory /appli/projects/project1/apache_2.4/htdocs/site1/>
        # Some specific vhost config...
    </Directory>

    <Directory /appli/projects/project1/apache_2.4/htdocs/site2/>
        # Some specific vhost config...
    </Directory>

</virtualHost>

如果您需要不同的子域,例如:site1.example.comsite2.example.com,那么只需执行直接指向文件夹的不同vhost,仍然使用端口80作为http,使用端口443作为https。

请记住,您需要拥有https的多域证书或通配符证书(因为它们是两个不同的主机名)。或者您可以安装Let's Encrypt