Я настроил 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;
}
}
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
Мне кажется, что перенаправление делает страница, а не веб-сервер. С помощью PHP это можно сделать примерно так:
<?php header('Location: http://google.com') ?>
В этом случае трудно запретить такое поведение через сам веб-сервер.
Я не вижу перенаправления в коде, который вы разместили в вопросе. Это означает, что перенаправление происходит на стороне 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 (теоретически вы можете попробовать отфильтровать этот заголовок).