Puncte:0

Aplicația express js cu proxy invers nignx „te-a redirecționat de prea multe ori”.

drapel cn

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.

Michael Hampton avatar
drapel cz
Într-adevăr, redirecționați toate solicitările din nginx către aceeași adresă URL fără condiție. De ce ați configurat această redirecționare?
drapel cn
@MichaelHampton, astfel încât să îmi pot rula aplicația în portul 3000 și nginx în portul 80 ca server web. și oferă aplicația mea prin proxy invers.
Michael Hampton avatar
drapel cz
Asta nu are sens. Nu există niciun motiv pentru ca acea redirecționare să fie acolo și este cauza evidentă a problemei.
drapel cn
@MichaelHampton aveți sugestii sau resurse despre cum pot face acest lucru în mod proporțional
Michael Hampton avatar
drapel cz
Eliminați redirecționarea necorespunzătoare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.