我目前正在尝试设置我的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
在网站之间分享信息。
我不知道它是否真的很清楚,只要问你是否需要更多的信息。
提前谢谢你。
答案 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/site1
和http://example.com/site2
,也可以使用相同的https。
如果您开始使用不同的端口(默认值为80和443以外的任何端口,则需要显式写入端口名称才能访问站点,或设置反向代理(增加额外的复杂性而无实际增益)
您甚至可以在vhost中为site1
和site2
定义具体规则。
每个站点的配置:
<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.com
和site2.example.com
,那么只需执行直接指向文件夹的不同vhost,仍然使用端口80作为http,使用端口443作为https。
请记住,您需要拥有https的多域证书或通配符证书(因为它们是两个不同的主机名)。或者您可以安装Let's Encrypt。