Рейтинг:1

Корень Nginx proxy_pass на внешнюю целевую страницу

флаг fr

Для нового домена x.co, который я настраиваю, я хочу, чтобы корень (x.co) показывал внешнюю целевую страницу без изменения URL-адреса на URL-адрес внешней целевой страницы.

Эта целевая страница создана на hubspot и опубликована по адресу a.hubspot.b/c.

Есть ли простой способ добиться этого? Я проверил несколько ответов, например 1, 2, 3, но не получил.

То, что у меня есть сейчас, ниже. Он перенаправляет на целевую страницу, изменяя URL-адрес на a.hubspot.b/c. Мне нужно, чтобы URL оставался прежним x.co.

FWIW, я также использую кэширование cloudflare и DNS.

сервер {
        слушать 80;
        имя_сервера x.co www.x.co;
        вернуть 301 https://$server_name$request_uri;
}

сервер {
        слушать 443 ssl http2;
        имя_сервера x.co www.x.co;

        ssl_certificate x.co.pem;
        ssl_certificate_key x.co.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_session_cache общий: SSL: 1 м;
        ssl_session_timeout 5 м;

        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers включен;

        место расположения / {
            #proxy_pass https://x-12345.hubspotpagebuilder.eu/coming-soon/;

            резольвер 8.8.8.8;

            proxy_pass https://x-12345.hubspotpagebuilder.eu/coming-soon;
            proxy_set_header Хост $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $ схема;


            #корень /var/www/frontend/x;
            #корень html;
            #index index.html index.htm;
        }
    }

Изменить / добавить - по глупости я не удосужился проверить журналы ошибок nginx. Когда я это сделал, были хорошие подсказки к проблеме. В журналах ошибок было

«SSL_do_handshake() не удалось (SSL: ошибка: 14094410: подпрограммы SSL: ssl3_read_bytes_sslv3 ошибка рукопожатия предупреждения: номер предупреждения SSL 40) при квитировании SSL к восходящему потоку, клиент: 2401: ......» 

(..... в конце означает, что здесь есть еще текст, который я не набрал. Я использую сертификат Cloudflare на своем бэкэнде и перенаправляюсь на страницу hubspot в nginx — это казалось проблемой.

И это было. Решением было добавить proxy_ssl_server_name включено;. Все proxy_set_header директивы, которые я копировал в отчаянии, были бессмысленны, и от них можно было бы с радостью избавиться. Эта страница оказался очень полезным в объяснении проблемы и решения.

Ivan Shatsky avatar
флаг gr
Я не получил пару вещей.Что должно произойти с любым другим запросом (я имею в виду другой, чем корневой запрос)? Почему вы используете все эти директивы proxy_set_header? Вы используете их для какой-то цели или просто копируете их из какого-то примера, не понимая, что они на самом деле делают?
Ahron avatar
флаг fr
Все `proxy_set_headers` и `resolver` копируются. Остальное мое. Когда то, что у меня было, не сработало, я начал копировать вставку. Для некорневых запросов сейчас подходит 404.
Ivan Shatsky avatar
флаг gr
Попробуйте удалить хотя бы один `proxy_set_header Host $host;`. Вам нужен преобразователь только в том случае, если доменное имя для директивы proxy_pass указано с использованием переменных, которые не являются вашим случаем (однако это не принесет никакого вреда).
Ahron avatar
флаг fr
Затем я получаю сообщение об ошибке Host error 502 через Cloudflare.
Ivan Shatsky avatar
флаг gr
Вы получаете ошибку 502 после удаления директивы proxy_set_header Host $host;, а не директивы resolver?
Ahron avatar
флаг fr
Да. Я не мог понять это.
Ivan Shatsky avatar
флаг gr
Звучит действительно странно. Хорошо, попробуйте явно установить значение с помощью `proxy_set_header Host "x-12345.hubspotpagebuilder.eu";`.
Ahron avatar
флаг fr
Никакого эффекта к сожалению.
Ahron avatar
флаг fr
В журналах ошибок говорится: «SSL_do_handshake() не удалось (SSL: ошибка: 14094410: подпрограммы SSL: ssl3_read_bytes_sslv3 предупреждение о сбое рукопожатия: номер предупреждения SSL 40) при квитировании SSL с восходящим потоком, клиент: 2401: ......» (.. .... в конце означает, что есть еще текст, который я не набрал здесь Я использую сертификат Cloudflare на своем бэкэнде и перенаправляюсь на страницу hubspot в nginx - это звучит как проблема
Ivan Shatsky avatar
флаг gr
Вам лучше добавить сообщения журнала ошибок, отредактировав свой вопрос. Это похоже на какое-то несоответствие версий TLS, но это область, в которой у меня нет глубоких знаний. Подумайте об обновлении ваших тегов вопросов, возможно, кто-то еще их просматривает.
Ahron avatar
флаг fr
Хорошо, большое спасибо за упорство в попытке помочь мне. Я понял. Это действительно была проблема с SSL. Глупо с моей стороны не удосужиться проверить журналы. Решение состоит в том, чтобы добавить `proxy_ssl_server_name on;` всю пасту копирования `proxy_set_headers`, что бессмысленно, учитывая характер проблемы. Эта ссылка оказалась очень полезной, так что, возможно, вы тоже могли бы взглянуть - https://www.claudiokuenzler.com/blog/1120/nginx-reverse-proxy-ssl-alert-number-40-while-ssl-handshaking-upstream

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.