Назад | Перейти на главную страницу

Отключить 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;
   }
}

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 (теоретически вы можете попробовать отфильтровать этот заголовок).