я использую pm2 для запуска моего приложения MERN как процесса, когда я набираю завиток http://локальный:3000
в консоли вывод действительно из моего приложения. но обратный прокси nginx не работает. приложение работает на vps и подключено к доменному имени. но меня слишком много раз перенаправляли. из браузера.
сервер.js
постоянный ПОРТ = 3000
постоянное приложение = экспресс()
постоянный маршрутизатор = экспресс. Маршрутизатор ()
const {постоянный, магазин} = createPersistor()
const serverRenderer = (req, res, next) => {
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, '../build/index.html'), функция (ошибка) {
если (ошибка) {
рез.статус(500).отправить(ошибка)
}
})
})
постоянный контекст = {}
fs.readFile(path.resolve('./build/index.html'), 'utf8', (ошибка, данные) => {
если (ошибка) {
console.error(ошибка)
return res.status(500).send('Произошла ошибка')
}
вернуть res.send(
данные.заменить(
'<div id="root"></div>',
`<div ID="корень">
${ReactDOMServer.renderToString(
<Магазин поставщика={магазин}>
<StaticRouter location={req.url} context={context}>
<PersistGate loading={null} persistor={persistor}>
<Приложение />
</PersistGate>
</Статикмаршрутизатор>
</Провайдер>
)}
</div>`
)
)
})
}
router.use('^/$', serverRenderer)
роутер.использовать(
express.static(path.resolve(__dirname, '..', 'сборка'))
)
app.use(маршрутизатор)
app.listen(ПОРТ, () => {
console.log(`SSR работает на порту ${PORT}`)
})
nginx/сайты-доступно/по умолчанию:
сервер {
слушать 80 default_server;
слушать [::]:80 default_server;
имя_сервера 198.51.100.255;
вернуть 302 $схема://mysite.com$request_uri;
место расположения / {
# Сначала пытаемся обслужить запрос как файл, затем
# в качестве каталога, затем вернуться к отображению 404.
try_files $uri $uri/ =404;
proxy_pass http://localhost:3000;
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение «обновление»;
proxy_set_header Хост $host;
proxy_cache_bypass $http_upgrade;
}
}
и журнала ошибок нет.
примечание: я еще не настроил SSL.