У меня есть сервер разработки, на котором я разместил сайт, построенный на платформе Symfony (www.example.com).
Теперь для этого доменного имени «www.example.com» у нас есть все SSL-сертификаты и другие вещи, необходимые для веб-сайта.
У меня есть требование, где я должен развернуть еще один экземпляр Symfony, но без создания нового доменного имени. Как мне этого добиться?
Может ли он указывать на www.example.com/newInstance?
Могу ли я запустить два сайта на одном доменном имени?
www.example.com/oldInstance и www.example.com/newInstance
У меня меньше знаний о сетевом взаимодействии, поэтому ищу помощь по этому вопросу.
Если вы используете Apache в качестве веб-сервера, вы можете использовать alias
указать каждый каталог
<VirtualHost *:80>
DocumentRoot "path/To/Your/DocumentRoot/oldInstance"ServerName www.example.com
<Directory "path/To/Your/DocumentRoot/oldInstance">
DirectoryIndex app.php
Options Indexes
AllowOverride All
Require all granted
</Directory>
Alias /newInstance "path/To/Your/DocumentRoot/newInstance"
<Directory "path/To/Your/DocumentRoot/newInstance">
DirectoryIndex app.php
Options Indexes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Если вы запросите http://example.com/ вы получите каталог OldInstance. Если вы запросите http://example.com/newInstance вы получите новый каталог.
Если вы хотите получить каталог oldInstance с помощью http://example.com/oldInstance вместо http://example.com тогда вы можете настроить другой псевдоним для этого:
Alias /oldInstance "path/To/Your/DocumentRoot/oldInstance"
Не забудьте проверить, если mod_alias
включен в вашей конфигурации Apache.
LoadModule alias_module modules/mod_alias.so
Я надеюсь, что это поможет вам.
Если вы используете Nginx + Apache и хотите указать Apache для разных каталогов в соответствии с путем, вы можете достичь этого с помощью следующей конфигурации:
#Nginx
location /newInstance {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host YOUR_HOST_FOR_APACHE_HERE;
proxy_pass http://127.0.0.1:8080;
}
location /oldInstance {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host ANOTHER_HOST_FOR_APACHE_HERE;
proxy_pass http://127.0.0.1:8080;
}
И установите конфигурацию VirtualHost для Apache:
#Apache
<VirtualHost *:8080>
DocumentRoot "/var/www/newInstance"ServerName YOUR_HOST_FOR_APACHE_HERE
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "/var/www/oldInstance"ServerName ANOTHER_HOST_FOR_APACHE_HERE
</VirtualHost>
Если у вас есть только Apache в вашей конфигурации, вы можете настроить псевдонимы, как предложено @Hokusai:
<VirtualHost *:80>
DocumentRoot "path/To/Your/DocumentRoot/oldInstance"ServerName www.example.com
<Directory "path/To/Your/DocumentRoot/oldInstance">
DirectoryIndex app.php
Options Indexes
AllowOverride All
Require all granted
</Directory>
Alias /newInstance "path/To/Your/DocumentRoot/newInstance"
<Directory "path/To/Your/DocumentRoot/newInstance">
DirectoryIndex app.php
Options Indexes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Также вы можете использовать свой фронт-контроллер (например, app.php
) управлять всем трафиком и импортировать разные файлы в зависимости от имени хоста.