Назад | Перейти на главную страницу

прокси-сервер docker nginx: ошибка ERR_TOO_MANY_REDIRECTS

Я использую док-контейнер jwilder / nginx-proxy для прокси-сервера magento-контейнера (с использованием nginx) с SSL. Я смог настроить контейнеры и запустить процедуру установки magento с помощью SSL-соединения. После завершения установки я получаю сообщение об ошибке ERR_TOO_MANY_REDIRECTS всякий раз, когда пытаюсь получить доступ к веб-интерфейсу или бэкэнду magento.

Это кажется странным, поскольку во время установки, очевидно, нет проблем, поэтому я предполагаю, что должно быть что-то, чего я еще не понимаю. Я предполагаю, что есть некоторые правила перезаписи, которые портят архитектуру, но я не могу понять, что не так.

Это моя конфигурация magento nginx:

#
# The default server
#
server {

listen   443;

ssl on;

server_name example.com;

ssl_certificate        /etc/certs/example.com.crt;
ssl_certificate_key    /etc/certs/example.com.key;

#charset koi8-r;


root   /var/www;
index  index.html index.htm index.php;


location / {

    index index.html index.php; ## Allow a static html file to be shown first

    try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler

    expires 30d; ## Assume all files are cachable

}



## These locations would be hidden by .htaccess normally

location ^~ /app/                { deny all; }

location ^~ /includes/           { deny all; }

location ^~ /lib/                { deny all; }

location ^~ /media/downloadable/ { deny all; }

location ^~ /pkginfo/            { deny all; }

location ^~ /report/config.xml   { deny all; }

location ^~ /var/                { deny all; }



location /var/export/ { ## Allow admins only to view export folder

    auth_basic           "Restricted"; ## Message shown in login window

    auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword

    autoindex            on;

}



location  /. { ## Disable .htaccess and other hidden files

    return 404;

}



location @handler { ## Magento uses a common front handler

    rewrite / /index.php;

}



location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler

    rewrite ^(.*.php)/ $1 last;

    fastcgi_read_timeout 500;

}


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

}

Я добавил следующие переменные среды в контейнер докеров magento:

Кроме того, я добавил сертификаты ssl к прокси nginx, а также к конфигурации magento nginx. Таким образом, каждый контейнер (прокси nginx и magento) содержит эти сертификаты.

Идея состоит в том, что прокси nginx перенаправляет все запросы от example.com в контейнер magento через SSL-соединение.

Контейнер magento не предоставляет публичные порты, но прокси-сервер nginx ссылается на контейнер (по соображениям безопасности).

Я отчаянно работал над этим уже несколько дней и очень ценю любой намек. Может быть проблема с сертификатами? Например. если перенаправленный запрос от прокси-сервера nginx содержит другое имя сервера и не может проверить сертификаты на magento ?! Но если да, то как это можно решить?

Спасибо Питер

Выполните это в каталоге установки Magento 2.x, и ваш сайт вернется в нормальное состояние (с безопасным соединением).

sudo php bin/magento setup:store-config:set --base-url-secure="https://example.com"

Питер

Похоже, вы полностью делаете свой сайт доступным с помощью SSL.

Вы установили небезопасный путь в Magento на https? Это может быть все, что вам нужно для базовой установки Magento?

update core_config_data set value="https://<mysite>/" where path="web/unsecure/base_url"

Кроме того, вам может понадобиться

update core_config_data set value=1 where path="web/secure/use_in_adminhtml"