Моя среда следующая:
Cloudflare (HTTPS) -> AWS ALB (HTTPS) -> AWS EC2 (HTTP) (nginx, php-fpm, typo3)
Я использую режим Full (строгий) SSL Cloudflare.
Таким образом, существует двойное завершение SSL: один раз в Cloudflare, а другой в балансировщике нагрузки AWS. Приложение TYPO3 получает запросы по HTTP.
Конфигурация nginx, которую я использую, взята из официальной документации TYPO3:
Отрывок:
...
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /typo3 {
rewrite ^ /typo3/;
}
location /typo3/ {
absolute_redirect off;
try_files $uri /typo3/index.php$is_args$args;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_buffer_size 32k;
fastcgi_buffers 8 16k;
fastcgi_connect_timeout 240s;
fastcgi_read_timeout 240s;
fastcgi_send_timeout 240s;
# this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
При доступе к https://<MY_DOMAIN>.com/typo3/ я получаю ошибку ERR_TOO_MANY_REDIRECTS.
Мой index.php в папке typo3/ стандартный, ничего необычного. Должно загружаться приложение TYPO3.
<?php
call_user_func(static function () {
$classLoader = require dirname(dirname(__DIR__)).'/vendor/autoload.php';
\TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::run(1, \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_BE);
\TYPO3\CMS\Core\Core\Bootstrap::init($classLoader)->get(\TYPO3\CMS\Backend\Http\Application::class)->run();
});
На другом веб-сайте TYPO3, где я не использую Cloudflare + балансировщик нагрузки, где SSL завершается на самом сервере, у меня нет этой проблемы.
В журналах нет ничего, что указывало бы на то, где может быть проблема. Я даже включил ведение журнала отладки в nginx. TYPO3 получает запросы по HTTP. Я предполагаю, что TYPO3 сам перенаправляет на HTTPS, что вызывает цикл перенаправления, но я не уверен.
Чтобы отследить источник перенаправлений, попробуйте установить rewrite_log on; и error_log ...path-to-error.log debug; в конфигурации nginx, затем снова откройте URL-адрес и проанализируйте логи. Попробуйте заменить содержимое index.php чем-нибудь простым, например <?php echo 'hello', чтобы гарантировать, что перенаправления не инициируются кодом PHP.
@RuslanOsmanov Когда я меняю index.php на что-то простое, например <?php echo 'hello', все работает нормально. Но когда нужно загрузить TYPO3, это не работает. Я разместил index.php в посте, чтобы вы могли это увидеть.
Я думаю, TYPO3 перенаправляет с http на https. Существует промежуточное программное обеспечение ForcedHttpsBackendRedirector, которое активируется, если параметр конфигурации lockSSL не равен false или нулю. Попробуйте проверить, действует ли эта настройка.
Вот и все! Я изменил 'lockSSL' => false (ранее для него было установлено значение «true») в config/system/settings.php, и теперь это работает. Большое спасибо :)
@RuslanOsmanov, ты можешь написать это как ответ, если хочешь, чтобы я принял его. В противном случае, хорошего дня.






В TYPO3 есть промежуточное программное обеспечение ForcedHttpsBackendRedirector , которое перенаправляет с http:// на https://, если параметр конфигурации lockSSL не равен false или не равен нулю. Попробуйте установить для этой опции значение false в конфигурации TYPO3.
Связанный: Где nginx хранит rewrite_log?