Я настроил Nginx как обратный прокси-сервер на своем сервере для сайта, скажем example.com.
Я хочу, чтобы клиент мог получить доступ к моему сайту, используя IP-адрес, напримерhttp://192.0.2.67
Проблема в том, что на сайте example.com установлено перенаправление HTTP на HTTPS. (Этот example.com использует Cloudflare)
Когда клиент заходит на мой сайт, http://192.0.2.67
он перенаправляется наhttps://example.com
Как отключить перенаправление HTTP на HTTPS на моем обратном прокси-сервере Nginx?
Мой код выглядит следующим образом:
server {
listen 80;
location / {
proxy_pass http://example.com;
}
}
решение1
Я не вижу перенаправления в коде, который вы разместили в вопросе. Это означает, что перенаправление сделано на стороне example.com.
Зависит от того, как выполняется перенаправление. В случае, если перенаправление выполняется просто "http TCP/80 => https TCP/433" и нет следующих проверок, вы можете попробовать проксировать напрямую на https:
server {
listen 80;
location / {
proxy_pass https://example.com;
}
}
Если это не поможет, боюсь, у вас мало шансов на успех, поскольку вы не являетесь узлом, осознающим силу перенаправления https.
В случае, если на странице есть заголовок HTTP Strict Transport Security (HSTS), перенаправление осуществляется на уровне браузера, и там у вас также минимальные шансы пропустить IP (теоретически вы можете попробовать отфильтровать этот заголовок).
решение2
Мне кажется, что перенаправление делает страница, а не веб-сервер. Через PHP это можно сделать примерно так:
<?php header('Location: http://google.com') ?>
В этом случае сложно запретить подобное поведение через сам веб-сервер.
решение3
Nginx не перенаправляет здесь. Это исходный сервер отправляет этот HTTP-переадресацию. С помощью Nginx вы можете заменить отправленные переадресации на собственную цель переадресации:
server {
listen 80;
location / {
proxy_pass http://example.com;
# replace redirects
proxy_redirect http://example.com http://192.0.2.67;
}
}
Более подробную информацию см.документация ngx_http_proxy_module