Рейтинг:0

Nginx отправляет 301 при использовании proxy_pass

флаг mr

У меня есть веб-сайт, размещенный на AWS, www.example.com. Я создал блог на Wix myblog.wixsite.com/blog. Теперь я хочу показать содержимое myblog.wixsite.com/blog на www.example.com/blog. Поэтому я использовал следующую конфигурацию Nginx, чтобы попытаться добиться этого.

расположение /блог/ {
          sub_filter 'http://myblog.wixsite.com/' 'https://$http_host/blog/';
          sub_filter 'https://myblog.wixsite.com/' 'https://$http_host/blog/';
          sub_filter 'href="/posts/' 'href="/blog/';
          sub_filter 'href="/category/' 'href="/blog/category/';
          sub_filter 'href="/authors/' 'href="/blog/authors/';
          sub_filter 'href="/recent/' 'href="/blog/recent/';

          proxy_ssl_verify выключен;
          proxy_set_header Хост "myblog.wixsite.com";
          proxy_set_header X-Forwarded-Host "";
          proxy_set_header X-Forwarded-For "";
          proxy_set_header Accept-Encoding "";
          proxy_set_header Cookie "";

          proxy_pass http://myblog.wixsite.com/blog/;

          proxy_redirect ~^(http://[^/]+)(/.+)$ https://$http_host$2;
        }

Теперь, когда я ударил www.example.com/blog, Nginx перенаправляет меня на https://myblog.wixsite.com/blog/ вместо того, чтобы показывать содержимое на www.example.com/blog сам. Я также пытался изменить proxy_pass http://myblog.wixsite.com/blog/; к proxy_pass https://myblog.wixsite.com/blog/; но я начал получать следующую ошибку.

*532 Ошибка SSL_do_handshake() (SSL: ошибка: 14077438: подпрограммы SSL: SSL23_GET_SERVER_HELLO: внутренняя ошибка оповещения tlsv1) при квитировании SSL с восходящим потоком, клиент: <отредактировано>, сервер: www.example.com, запрос: «GET /blog/ HTTP/2.0", восходящий поток: "https://myblog.wixsite.com/blog/", хост: "www.example.com"

Я занимался этим пару дней, но безрезультатно. Может кто-нибудь подсказать, что я могу делать неправильно?

Рейтинг:1
флаг us

Редирект отправляет не nginx, а сайт https://myblog.wixsite.com/blog/ который отправляет перенаправление, nginx проксирует только ответ, который он получает от сайта.

флаг mr
Есть ли способ предотвратить это?
Рейтинг:1
флаг tz

Либо используйте proxy_redirect или изменить

proxy_pass http://myblog.wixsite.com/blog/; к 
proxy_pass https://myblog.wixsite.com/blog/;

Обратите внимание, что протокол https вместо http. Ваш блог wix в любом случае обслуживается по протоколу HTTPS.

флаг mr
Я тоже пытался это сделать, но застрял в ошибке рукопожатия SSL. Я обновил вопрос с более подробной информацией.
mforsetti avatar
флаг tz
Попробуйте установить для [`proxy_ssl_server_name`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name) значение `on`.

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

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