Потребовалось иметь хост, который проксирует запросы к разным версиям сайта.
Например, мы делаем запрос http://mysiteproxy/index/action1 и выдается страница с
http://site1/index/action1, а если делаем запрос http://mysiteproxy/index/action2 -
получаем http://site2/index/action2. Что-то вроде этого.
Пример для ubuntu.
Настраиваем nginx и apache2.
Apache будет слушать порт 8080.
$ sudo nano /etc/apache2/ports.conf
...
NameVirtualHost *:8080
Listen 8080
...
Настриваем проксирование запросов к apache. Создаем файл
/etc/nginx/conf.d/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
Редактируем настройки хоста по-умолчанию /etc/nginx/sites-available/default.
Все запросы шлем на localhost:8080, по-умолчанию nginx висит на порту 80.
Не забываем потом поместить конфиг. файл в sites-enabled. Я обычно делаю ссылку.
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /usr/share/nginx/www;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
proxy_pass http://127.0.0.1:8080;
}
}
Перезапускаем сервера
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart
Настраиваем хост-прокси
Создаем конфигурационный файл хоста
sudo nano /etc/nginx/sites-avaliable/mysiteproxy.conf
server {
listen 80;
server_name mysiteproxy;
access_log /var/log/nginx/access.log;
location = / {
include /etc/nginx/site1.proxy.conf;
}
location / {
include /etc/nginx/site2.proxy.conf;
}
location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
root /var/www/site1/;
}
}
Тут директивы location указывают как будут проксироваться запросы (подробно в документации nginx).
В данном случае главная будет с site1, внутренние страницы - site2.
Создаем два файла конфигурации прокси
sudo nano /etc/nginx/site1.proxy.conf
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host site1;
proxy_redirect http://site1/ /;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
Аналогично для второго хоста.
Перезапускаем nginx
sudo /etc/init.d/nginx restart
Если не настраиваем DNS, то прописываем хосты в /etc/hosts.