簡體   English   中英

如何通過 nginx 和 pm2 使用 React Router 正確代理服務器渲染應用程序

[英]How to properly proxy through nginx and pm2 a Server Rendering app with React Router

大家好我正在嘗試根據本教程使用帶有 React Router 的服務器渲染在 AWS EC2 實例上部署一個測試應用程序,用於服務器渲染組件使用 nginx 代理到 localhost:PORT 如下

nginx 配置:

server{ listen 80 ; listen [::]:80;

server_name myservername.com;

location / { proxy_pass http://localhost:PORT$request_uri;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade; }

}

下午2:

簡單地運行

 pm2 start /location --name AppName

我能夠對我的應用程序做出反應,但只能對它的后端部分做出反應,如果我嘗試到達前端,所有路徑似乎都被重定向到 React Router 的 404 處理程序,但是如果我要使用命令啟動應用程序

 node server.js

一切正常,但當然這不是這樣做的方法,因為一旦命令行被終止,進程就會被終止。 在 webpack 構建生產代碼后,它在公共文件夾中創建了一個 build.js 並創建了一個 server.js,據我所知,server.js 處理要顯示或相應響應的內容。 我控制台記錄路徑,認為代理之后的路徑可能不同,不,它返回我要求的路徑,還發現 pm2 可能提供 static 個文件

 pm2 serve /path/bundle.js port 

所以我使用與后端相同的端口來做到這一點,我知道那是行不通的,但請嘗試一下。 我看到了一些建議,你讓 nginx 有一個 / 路徑和一個 /api 路徑,但是由於它的服務器呈現不起作用加上事實是前端和所有 css 或 html 調用在使用 pm2 但使用相同的 nginx 時返回 404配置文件,但從命令行運行服務器告訴我 nginx 配置文件很好,但也許 pm2 可能是罪魁禍首,如果有人能幫我弄清楚我缺少什么,我將不勝感激。

大家好,我終於弄明白了,所以 pm2 無法訪問某些路由,因為 bundle 前端位於不同的文件夾中,它也是 static,所以解決方法是按以下形式調整 nginx 配置

server{ listen 80 ; listen [::]:80;

server_name myservername.com;

location / { proxy_pass http://localhost:PORT$request_uri;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade; }

}

location /bundle.js{
root /path/;
index bundle.js;
}

現在提供“遙不可及”的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM