Я пытался создать приложение стека PERN. Он работает локально, но когда я помещаю его в AWS, вызовы api к бэкэнду Node получают ERRCONNECTIONREFUSED в google chrome. Мое приложение для реагирования находится на порте 5000, а узел - на 8000. У меня они оба работают с pm2. Я создал приложение для реагирования с помощью «npm run build». Я думаю, что это проблема прокси, и я действительно не знаю, как настроить этот файл конфигурации nginx. Любая помощь приветствуется.
REACT
package. json:
"proxy": "http://localhost:8000",
api. js
import axios from "axios";
export default axios.create({
baseURL: "http://localhost:8000/",
});
NODEJS
const express = require("express");
const app = express();
require("dotenv").config(); // configures dotenv to use .env variables
const bodyParser = require("body-parser");
const morgan = require("morgan");
const cors = require("cors");
const directoryRoutes = require("./routes/directory");
// MIDDLEWARE
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(morgan("tiny"));
app.use(cors({ origin: true, credentials: true }));
// ROUTES
app.use("/directory", directoryRoutes);
// default route (not necessary for API)
app.use("/", (req, res, next) => {
res.send({ hello: "worlds" });
});
app.listen(8000, () => {
console.log("listening on port 8000");
});
И сервер настроен с использованием NGINX с этой конфигурацией в / etc / nginx / sites-available / default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name www.***MYSERVERNAME*** ***MYSERVERNAME***; # managed by Certbot
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/orgo.systems/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/orgo.systems/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = ***MYSERVERNAME***) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = ***MYSERVERNAME***) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name ***MYSERVERNAME*** ***MYSERVERNAME***;
return 404; # managed by Certbot
}
Я также настроил SSL с CertBot и LetsEncrypt.