Вопрос или проблема
Я запускаю экземпляр 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, давайте разберёмся по шагам.
-
Проблема с петлей перенаправления: Как вы правильно заметили, у вас происходит зацикленное перенаправление между портами 80 и 443. Вы используете следующие директивы:
- На порту 80 (HTTP) выполняется перенаправление всех запросов на HTTPS (порт 443).
- На порту 443 (HTTPS) настроен обратный прокси на HTTP (127.0.0.1:8001).
Это создает ситуацию, когда при любых попытках доступа к вашему домену происходит зацикленное перенаправление. Apache сначала перенаправляет на HTTPS, а затем обратный прокси перенаправляет на HTTP, что возвращает на HTTPS и так далее.
-
Решение: Вам нужно изменить конфигурацию 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>
-
Проверка Cloudflare: Убедитесь, что в настройках Cloudflare включены соответствующие правила. Например, если ваши правила Redirection в Cloudflare конфликтуют с вашим сервером, это также может привести к проблемам с зацикливанием. Попробуйте временно отключить проксирование (поменяйте на "DNS only") для выявления конфликта.
-
Дополнительная отладка: После внесения изменений проверьте:
- Логи Apache на наличие новых ошибок.
- Используйте
curl -I
для проверки HTTP-заголовков, чтобы убедиться, что перенаправления выполняются корректно.
После внесения указанных изменений, ваш сервер должен корректно обрабатывать запросы и избегать зацикленных перенаправлений. Убедитесь, что все изменения протестированы, чтобы удостовериться, что Netbox работает должным образом без ошибок перенаправления.