Щелчки по ссылкам в подкаталоге proxy_pass возвращают 404 NGINX

Хорошо, я постараюсь объяснить это как можно лучше. мочь. Мне удалось настроить расположение подкаталога / blog / на блоке сервера example.com (веб-сайт A), который успешно отображает мой блог на поддомене blog.example .com.au серверный блок (веб-сайт B) с URL-адресом example.com/blog/ .

Однако, когда я нажимаю любую из ссылок на домашней странице из примера .com / blog / , он показывает 404 веб-сайта A, когда он должен ссылаться на статью на веб-сайте B.

Желаемое поведение: example.com/blog/article ссылается на blog.example.com/article при отображении example.com/blog/article

Фактическое поведение: example.com/blog/article ссылается на example.com/article при отображении example.com/article 404

Я хочу убедиться, что / blog / появляется в каждом запросе, который должен быть передан на веб-сайт B через блок местоположения / blog / .

Вот мой текущий серверный блок для веб-сайта A для обслуживания блога на веб-сайте B :

server {
  server_name example.com;

...

  location ^~ /blog/ {
      proxy_pass https://blog.example.com.au/;
      proxy_set_header Host blog.example.com.au;
  }

  # This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above
  location /assets/ {
     proxy_pass https://blog.example.com.au/assets/; 
}

  # This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above
  location /content/ {
    proxy_pass http://blog.example.com.au/content/;
  }
}

Если это помогает, веб-сайты A и B имеют обратный прокси-сервер и отлично работают самостоятельно в одном файле conf:

upstream Website_A {
  server Website_A:8000;
}

upstream Website_B {
    server Website_B:2368;
}

...
0
задан 7 September 2020 в 09:35
1 ответ

Настройте серверную часть с правильным базовым URL-адресом, чтобы он генерировал правильные ссылки.

Поскольку вы используете Ghost для своего блога, опция называется url.

"url": "https://example.com.au/blog/"

Конечно, было бы разумнее проксировать это напрямую к призраку, а не проксировать дважды.

server {
    server_name example.com.au;

    # ...

    location /blog/ {
        proxy_pass http://Website_B:2368;
    }

}
2
ответ дан 6 September 2020 в 10:50

Теги

Похожие вопросы