Невозможно использовать Nginx в качестве обратного прокси для приложения Magento2, запущенного в другом экземпляре - PullRequest
0 голосов
/ 03 мая 2020

У меня есть приложение Magento2, работающее в отдельном экземпляре Ec2 за Apache2. У меня есть экземпляр внешнего интерфейса, работающий Nginx (также в другом экземпляре Ec2).

Экземпляр внешнего интерфейса выполняет React. js (который отображает пользовательский интерфейс) и Nginx, который действует как прокси для обоих React. и экземпляр Magento2.

Конфигурация Nginx была настроена таким образом, что любые обычные запросы go к коду React и любые запросы с / magento / в нем проксируются к внутреннему экземпляру, на котором работают Apache2 и Magento.

У меня все работает, за исключением того, что когда я пытаюсь получить доступ к админ-панели magento, используя URL http: // {имя_хоста} /magento/index.php/admin (URL-адрес администратора в magento2 имеет значение hostname / magento /), Я получаю 404 или бесконечное перенаправление запросов, которое в конечном итоге не удается. Моя текущая конфигурация Nginx:

server {
    server_name <hostname>;

    client_max_body_size 100M;
    listen 80;
    location / {
        proxy_pass http://localhost:3000;
        # Simple requests
        if ($request_method ~* "(GET|POST)") {
          add_header "Access-Control-Allow-Origin"  *;
        }
        proxy_http_version  1.1;
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /magento/ {
       proxy_pass http://<private IP address of the instance>/;
       proxy_set_header Host $host;
                }
}

Я знаю, что что-то не так с моей конфигурацией Nginx, потому что когда я передаю все данные на сервер (URL-адрес администратора в magento2 устанавливается на имя хоста) следующим образом, панель администратора загружается нормально.

server {
    server_name <hostname>;

    client_max_body_size 100M;
    listen 80;
    location / {
        proxy_pass http://<private ip of the backend>;
        # Simple requests
        if ($request_method ~* "(GET|POST)") {
          add_header "Access-Control-Allow-Origin"  *;
        }
        proxy_http_version  1.1;
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Что-то не так с Nginx, что я не могу поймать. Я сталкивался с этими ссылками: https://github.com/magento/magento2/issues/1698 https://community.magento.com/t5/Magento-2-x-Hosting-Performance/Configuration-problems-with-Nginx-as-reverse-for-Apache/td-p/88927 но я, как реализовать то же самое в моем случае, если это действительно проблема.

Может ли кто-нибудь помочь мне здесь? Я потратил довольно много времени, пробуя разные варианты в Nginx без всякой удачи.

...