Проблема заключалась в том (как я теперь понимаю), что Гэтсби размещает скрипты по адресу example.com/[script-address] и, используя NGINX proxy_pass, адрес скрипта также изменяется на example.com/[subfolder]/ [script-address].
Решением этой проблемы является установка значения "path-prefix" в gatsby.config
, как описано здесь: Документация Gatsby .
С выполняя это, я устанавливаю префикс для своего полного приложения, что на самом деле не то, что я хочу делать, поскольку основное приложение по-прежнему размещается на example.com, я хочу, чтобы субдомены передавались только на некоторые подстраницы. (Субдомены создаются пользователем и обслуживаются динамически основным приложением). Удивительно, но оба (основное приложение и субдомены) работают после изменения префикса пути.
Это, похоже, работает только для производственной сборки (вы должны передать флаг при сборке), так что в настоящее время я все еще не уверен что делать при разработке.
Если у вас есть идея, как я могу решить эту проблему лучше, пожалуйста, напишите мне:)
Спасибо Ивану и Ричарду за то, что поставили меня на правильный путь!
РЕДАКТИРОВАТЬ: лучше использовать префикс с активом: https://www.gatsbyjs.org/docs/asset-prefix/ Это все еще уродливо, и я думаю, что есть способ решить эту проблему с помощью NGINX. Я до сих пор не могу использовать эту сборку для разработки.
РЕДАКТИРОВАТЬ 2: После того, как я уже 3 дня возился с этим, я снова попытался найти похожий вопрос и мне повезло: https://serverfault.com/questions/840654/nginx-map-subdomain-to-a-subdirectory-on-proxied-server Я изменил свой код на:
location / {
proxy_pass http://localhost:8000/xyz$uri/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
и он наконец-то работает:)