Следующее JS за прокси с перезаписью URL - PullRequest
0 голосов
/ 01 августа 2020

Контекст:

У меня следующее развертывание JS за Nginx. Идея состоит в том, чтобы использовать Next JS для создания нескольких веб-сайтов, размещенных в разных доменах. Каждый домен будет иметь запись в Nginx, и он будет указывать на указанный c путь pages/cafes/[cafeId] в Next JS. Будет только одно развертывание Next Js для всех веб-сайтов, и каждый домен будет маршрутизироваться с использованием прокси-сервера static в nginx.

nginx .conf

   server {
        listen 80;
        server_name www.cafe-one.local;
        location = / {
            proxy_pass http://localhost:3000/cafes/cafe_id_1;
            ...
        }
        location / {
            proxy_pass http://localhost:3000/;
            ...
        }
    }
    
    server {
        listen 80;
        server_name www.cafe-two.local;
        location = / {
            proxy_pass http://localhost:3000/cafes/cafe_id_2;
            ...
        }
        location / {
            proxy_pass http://localhost:3000/;
            ...
        }
    }

pages / [cafeId] /index.js

export const getStaticPaths = async () => {
  return {
    paths: [], // no website rendered during build time, there are around 1000+ sites
    fallback: true
  };
};

export const getStaticProps = async context => {

  const cafeId = context.params.cafeId;
  const cafe = await ... // get data from server

  return {
    props: {
      cafe
    },
    revalidate: 10 // revalidate every 10 seconds
  };
};

export default function CafeWebsite(props) {
  const router = useRouter();

  // getStaticProps() is not finished
  if (router.isFallback) {
    return <div>Loading...</div>;
  }
  
  return <div>{props.cafe.name}</div>;
}

Проблема:

При доступе к www.cafe-one.local, я попадаю на экран загрузки, но затем JS выкидывает клиентскую ошибку о The provided as value (/) is incompatible with the href value (/cafes/[cafeId]). Это понятно, потому что текущий URL не соответствует ожиданиям Next JS.

введите описание изображения здесь

Вопрос:

Как исправить проблему, чтобы Next JS можно было использовать перед обратным прокси Nginx?

Любая помощь приветствуется.

Заранее спасибо.

...