Отключить https, когда Nginx выполняет обратный прокси-сервер на IP-адрес

Отключить https, когда Nginx выполняет обратный прокси-сервер на IP-адрес

Я настроил 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

Связанный контент