Folosesc pm2 pentru a rula aplicația mea MERN ca proces, când tast curl http://localhost:3000
în consolă, ieșirea este într-adevăr din aplicația mea. dar proxy-ul invers nginx nu funcționează. aplicația rulează pe un vps și este conectată la un nume de domeniu. dar sunt „redirecționat de prea multe ori”. din browser.
server.js
const PORT = 3000
const app = expres()
const router = express.Router()
const { persistent, store } = createPersistor()
const serverRenderer = (req, res, next) => {
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, '../build/index.html'), function (err) {
dacă (eră) {
res.status(500).send(err)
}
})
})
context const = {}
fs.readFile(path.resolve('./build/index.html'), 'utf8', (err, data) => {
dacă (eră) {
console.error(err)
return res.status(500).send('A apărut o eroare')
}
return res.send(
data.replace(
„<div id="root"></div>',
`<div id="root">
${ReactDOMServer.renderToString(
<Magazin furnizor={magazin}>
<StaticRouter location={req.url} context={context}>
<PersistGate loading={null} persistent={persistor}>
<Aplicație />
</PersistGate>
</StaticRouter>
</Furnizor>
)}
</div>`
)
)
})
}
router.use('^/$', serverRenderer)
router.use(
express.static(cale.resolve(__nume dir, '..', 'build'))
)
app.use (router)
app.listen(PORT, () => {
console.log(`SSR rulează pe portul ${PORT}`)
})
nginx/sites-available/default:
Server {
asculta 80 default_server;
asculta [::]:80 default_server;
nume_server 198.51.100.255;
returnează 302 $scheme://mysite.com$request_uri;
Locație / {
# Mai întâi încercați să serviți cererea ca fișier, apoi
# ca director, apoi reveniți la afișarea unui 404.
try_files $uri $uri/ =404;
proxy_pass http://localhost:3000;
proxy_http_versiunea 1.1;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune „upgrade”;
proxy_set_header Gazdă $gazdă;
proxy_cache_bypass $http_upgrade;
}
}
și nu există niciun jurnal de erori.
notă: nu am configurat încă SSL.