Cs-Cart Не Работает "за" Раутером

Здравствуйте,
В целях разработки нам необходимо иметь QA и DEV сервера cs-cart за раутером, таким образом чтобы разработчики имели доступ к серверам через один и тот же IP но различные порта:
ххх.ххх.ххх.ххх:8881 (для DEV)
ххх.ххх.ххх.ххх:8882 (для QA)
Первоначальный запрос к
ххх.ххх.ххх.ххх:8882/bazaar
(или .../bazaar/)
без проблем загружает домашнюю страницу. Однако на любой запрос с более длинной URL типа:
ххх.ххх.ххх.ххх:8882/bazaar/index.php
Cs-cart отвечает 301 редиректом:
ххх.ххх.ххх.ххх:8882/bazaar/index.php?dispatch=%2Fbazaar%2F
Страница содержит:
404ERROR
Oops!<br>
We were unable to find what you were looking for.

The page you have requested cannot be found.

Error code: Page Not Found

На обоих серверах была установлена стандартная (без каких либо модификаций) cs-cart multivendor 4.3.4 на Apache в папке htdocs/bazaar. На тех же серверах в тех же htdocs установлен другой софт к которому можно без проблем доступиться к любой папке. Установка имеет Demo database. Скрипт установки был запущен через
ххх.ххх.ххх.ххх:8882/bazaar/install
config.local.php:

$config['http_host'] = 'ххх.ххх.ххх.ххх:8882';

$config['http_path'] = '/bazaar';

Если произвести идентичную установку на сервер используя прямой IP сервера без указания порта и попробовать доступиться через этот же прямой IP то все работает без проблем.
Нужна помощь: почему cs-cart инициирует 301 redirect?
Спасибо!
Вадим

Нужна помощь: почему cs-cart инициирует 301 redirect?

Предположительно, из-за порта. Вадим, предлагаю убрать порт из config.local.php, завести доменные имена для ваших окружений (например, qa.staging.yourproject.tld и dev.staging.yourproject.tld), пробросить порты (80/tcp и 443/tcp) на балансировщик с NGINX/HAProxy и спроксировать на бэкэнды.

FYI чтобы держать в репозитории код без специфики окружений (логин и пароль для базы, хостнейм, каталоги и пр.), запишите параметры из config.local.php в local_conf.php и добавьте файл в .bzignore.

Предположительно, из-за порта. Вадим, предлагаю убрать порт из config.local.php, завести доменные имена для ваших окружений (например, qa.staging.yourproject.tld и dev.staging.yourproject.tld), пробросить порты (80/tcp и 443/tcp) на балансировщик с NGINX/HAProxy и спроксировать на бэкэнды.


Глеб,

Спасибо за ответ. Идея с load balancer / forward proxy понятна. Необходимость конфигурации доменных имён и прокси намного усложнит всю систему учитывая что к cs-cart обращаются не только через web интерфейс но также через rest API. Все же я надеялся что кто-то сможет объяснить как можно обойти ограничение по использованию портов через конфигурацию cs-cart.

Если к cs-cart нельзя обращаться через порт то это является существенным недостатком платформы для любых серьйозных production deployments.

CS-Cart можно разместить на порту, отличном от 80-го и 443-го, однако в URL не должно фигурировать значение порта. Иными словами, вы можете разместить приложение, например, на Apache на порту 8080, спроксировав трафик на него с того же NGINX. Поправьте, если ошибаюсь.

Глеб,

Спасибо за ответ. Идея с load balancer / forward proxy понятна. Необходимость конфигурации доменных имён и прокси намного усложнит всю систему учитывая что к cs-cart обращаются не только через web интерфейс но также через rest API.

Поясните, какие возникают сложности с появлением балансировщика? Не понимаю, как появление единой точки входа в приложение, оказывает влияние на работу REST API.

Все же я надеялся что кто-то сможет объяснить как можно обойти ограничение по использованию портов через конфигурацию cs-cart.

В этом вопросе более компетентны разработчики.