Контекст:
У меня следующее развертывание 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?
Любая помощь приветствуется.
Заранее спасибо.