嘗試在 Amazon LINUX EC2 實體上設定暫存環境并從 Heroku 遷移。我的存盤庫有兩個檔案夾:
- 網路
- API
我們的前端和后端在部署中運行在同一個埠上
在dev中,它們在單獨的埠上運行,所有來自 WEB 的請求并代理到 API(例如,WEB 在 PORT 3000 上運行,API 在 PORT 3001 上運行。在 WEB/ 的package.json檔案中設定代理)
目前,應用程式部署的作業方式如下:
- 構建 Web/ 用于分發
- 將 build/ 復制到 API 檔案夾
- 部署到 Heroku
web npm start
在prod中,我們只使用 WEB build/ 部署 API 檔案夾
當前的 nginx.conf 看起來像這樣 注釋掉所有其他嘗試
也使用 PM2 像這樣運行執行緒
$ sudo pm2 bin/www
當前執行緒像這樣運行:
pm2 log
這是在 EC2 實體上的 PORT 3000 上運行
例如,轉到公共 IPv4 DNS 會將我帶到登錄,它是從 /build 檔案夾中獲取的,但沒有任何登錄方法(或任何 API 呼叫)有效。 502 回應示例
我嘗試了很多不同的配置。將 proxy_pass 設定為埠 3000,因為那是 Node 行程運行的地方。我得到的唯一回應代碼是405 Not Allowed和502 Bad Gateway
如果我可以提供任何其他資訊來找到解決方案,請告訴我。
uj5u.com熱心網友回復:
您的配置中似乎沒有上游塊。看起來您正在嘗試使用proxy-pass發送到命名服務器和埠而不是定義的上游。此頁面上有一個示例,顯示了如何定義上游,然后向其發送流量。https://nginx.org/en/docs/http/ngx_http_upstream_module.html
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}````
uj5u.com熱心網友回復:
事實證明,將快速會話存盤在 Postgres 中存在問題。這導致我重新測驗連接字串,我發現我一直收到以下錯誤:
connect ECONNREFUSED 127.0.0.1:5432
我確實有一個保存 env 變數的 .env 檔案,它們沒有被 pm2 讀取。所以我在 app.js 中添加了這一行:
const path = require("path");
require('dotenv').config({ path: path.join(__dirname, '.env') });
然后使用以下命令使用 pm2 重新啟動應用程式:
$ pm2 restart /bin/www --update-env
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410155.html
標籤:
