302 редиректы на веб-сервере Apache HTTP

Вопрос или проблема

Я запускаю экземпляр Netbox на виртуальной машине OpenSUSE Leap. Файл конфигурации по умолчанию выглядит следующим образом:

<VirtualHost *:80>
    # ИЗМЕНИТЕ ЭТО НА ИМЯ ВАШЕГО СЕРВЕРА
    ServerName netbox.argenmedia.com

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
    ProxyPreserveHost On

    # ИЗМЕНИТЕ ЭТО НА ИМЯ ВАШЕГО СЕРВЕРА
    ServerName netbox.argenmedia.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/netbox.crt
    SSLCertificateKeyFile /etc/ssl/certs/netbox.key

    Alias /static /opt/netbox/netbox/static

    <Directory /opt/netbox/netbox/static>
        Options FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <Location /static>
        ProxyPass !
    </Location>

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

Включенные модули Apache:

a2enmod -l
actions alias auth_basic authn_core authn_file authz_host authz_groupfile authz_core authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl socache_shmcb userdir reqtimeout proxy proxy_http headers mod_rewrite

Логи Apache:

tail -f /var/log/apache2/access_log 
172.68.19.15 - - [02/Oct/2024:02:26:32 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:33 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:33 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:33 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:33 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:34 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:34 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.15 - - [02/Oct/2024:02:26:34 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
45.79.120.183 - - [02/Oct/2024:02:30:16 +0000] "GET / HTTP/1.1" 302 - "-" "Mozilla/5.0 (Debian; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
45.79.120.183 - - [02/Oct/2024:02:30:17 +0000] "GET /favicon.ico HTTP/1.1" 404 9307 "-" "Mozilla/5.0 (Debian; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
172.68.19.16 - - [02/Oct/2024:02:31:07 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:07 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:07 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:08 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:08 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:08 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:08 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:09 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:09 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:09 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:09 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
172.68.19.16 - - [02/Oct/2024:02:31:10 +0000] "GET / HTTP/1.1" 302 216 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"

Домен размещен на Cloudflare (в режиме прокси), так же как и другие услуги без каких-либо проблем.

Я понимаю, что происходит зацикливание, я заметил, что порт 80 говорит “Перенаправить все входящие запросы на https”, а порт 443 говорит “Передать это на http и т.д.” Так может быть, в этом и происходит зацикливание?
Но почему Netbox поставляется с таким дефектным конфигурационным файлом?
Или это какое-то условие перезаписи в моих настройках Cloudflare вызывает это?

Дополнительная информация:

netbox:/home/netbox# curl -I http://netbox.argenmedia.com
HTTP/1.1 302 Found
Date: Wed, 02 Oct 2024 03:31:16 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: https://netbox.argenmedia.com/
CF-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=SuA%2F8OAWIuZ1EUSRCS25njGptptwaWIwIbOTT0k36JQbFNp2JTNA0hk7WhRIbpTg5RS%2FAH%2BPACcZeNXSyEwY5Naw7csJpgKODYi%2F4reBYO042IpJ%2ByT0WlvG5Df%2FBP0pF9vJavAyUMewXg%3D%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Speculation-Rules: "/cdn-cgi/speculation"
Server: cloudflare
CF-RAY: 8cc19e594de1af50-GRU

netbox:/home/netbox# curl -I https://netbox.argenmedia.com
HTTP/2 302 
date: Wed, 02 Oct 2024 03:31:21 GMT
content-type: text/html; charset=iso-8859-1
location: https://netbox.argenmedia.com/
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=cDg5I7tqtcczMBLItdEEKLUqKqftsq4snsvLMepp%2BCJ1UzK5M8UOlA1jiG6ttXhLuHuyIfe9ZcoZgb8Psp2x6QD6PPgT%2FALYUzyX5VDxeCvGeu98893n0SuK6hzNFeAIdK%2FbrZeqcZ1jMw%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
speculation-rules: "/cdn-cgi/speculation"
server: cloudflare
cf-ray: 8cc19e78dc4fa4d2-GRU

Ответ или решение

Для решения проблемы с перенаправлением 302 на вашем Apache HTTP сервере, которую вы наблюдаете с вашей конфигурацией Netbox, давайте разберёмся по шагам.

  1. Проблема с петлей перенаправления: Как вы правильно заметили, у вас происходит зацикленное перенаправление между портами 80 и 443. Вы используете следующие директивы:

    • На порту 80 (HTTP) выполняется перенаправление всех запросов на HTTPS (порт 443).
    • На порту 443 (HTTPS) настроен обратный прокси на HTTP (127.0.0.1:8001).

    Это создает ситуацию, когда при любых попытках доступа к вашему домену происходит зацикленное перенаправление. Apache сначала перенаправляет на HTTPS, а затем обратный прокси перенаправляет на HTTP, что возвращает на HTTPS и так далее.

  2. Решение: Вам нужно изменить конфигурацию Apache таким образом, чтобы избежать этой зацикленной ситуации. Предлагаю внести следующие изменения:

    В вашем текущем конфигурационном файле VirtualHost на порту 443, добавьте условие для проверки наличия запроса на HTTPS и уберите ненужное перенаправление на HTTP.

    Пример исправленного конфига:

    <VirtualHost *:80>
       ServerName netbox.argenmedia.com
       RewriteEngine On
       RewriteCond %{HTTPS} off
       RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
    </VirtualHost>
    
    <VirtualHost *:443>
       ServerName netbox.argenmedia.com
       SSLEngine on
       SSLCertificateFile /etc/ssl/certs/netbox.crt
       SSLCertificateKeyFile /etc/ssl/certs/netbox.key
    
       Alias /static /opt/netbox/netbox/static
    
       <Directory /opt/netbox/netbox/static>
           Options FollowSymLinks MultiViews
           AllowOverride None
           Require all granted
       </Directory>
    
       <Location /static>
           ProxyPass !
       </Location>
    
       RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
       ProxyPass / http://127.0.0.1:8001/
       ProxyPassReverse / http://127.0.0.1:8001/
    </VirtualHost>
  3. Проверка Cloudflare: Убедитесь, что в настройках Cloudflare включены соответствующие правила. Например, если ваши правила Redirection в Cloudflare конфликтуют с вашим сервером, это также может привести к проблемам с зацикливанием. Попробуйте временно отключить проксирование (поменяйте на "DNS only") для выявления конфликта.

  4. Дополнительная отладка: После внесения изменений проверьте:

    • Логи Apache на наличие новых ошибок.
    • Используйте curl -I для проверки HTTP-заголовков, чтобы убедиться, что перенаправления выполняются корректно.

После внесения указанных изменений, ваш сервер должен корректно обрабатывать запросы и избегать зацикленных перенаправлений. Убедитесь, что все изменения протестированы, чтобы удостовериться, что Netbox работает должным образом без ошибок перенаправления.

Оцените материал
Добавить комментарий

Капча загружается...