gpt4 book ai didi

node.js - ERR_CONNECTION_REFUSED 带有 nginx 的平均应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:23 24 4
gpt4 key购买 nike

我有 2 个网络应用程序运行在 XX.XX.XX.XX/XX.XX.XX.XX/harvin 上,其中一个只是 Node -express 和另一个分别是 MEAN stack 应用程序。它们的配置如下:nginx

nginx.conf

# node-express
location / {
proxy_pass http://localhost:3000;
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;
}

# MEAN app
location /harvin {
rewrite ^/harvin/(.*)$ /$1 break;
proxy_pass http://localhost:8081;
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;
}

此问题与“Harvin”应用(MEAN 应用)有关。这是我的 app.js 文件,其中包含 CORS (跨源资源共享)配置。

app.js

const express = require("express");
const logger = require("morgan");
const cors = require("cors");
var app = express();

var whitelist = ["http://localhost:4200", "XX.XX.XX.XX"];

app.use(
cors({
origin(origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(new Error("Not allowed by CORS"));
}
},
methods: ["PUT, GET, POST, DELETE, OPTIONS"],
allowedHeaders: ["Content-Type", "Authorization", "X-Requested-With"],
credentials: true
})
);

//some middlewares

app.get("/api/login", (req, res) => {
console.log("login route");
// login the user
});

// Connect server to Angular 2 Index.html
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname + "/public/index.html"));
});

//some more routes

module.exports = app;


问题

我面临的问题是,当我从 Harvin 的客户端在 localhost:8081/api/login 上发出任何类型的请求(例如登录或注册等)时( MEAN 应用程序),然后控制台显示 ERR_CONNECTION_REFUSED

偶数morgan没有记录任何类型的登录请求。


异常 Harvin 主页加载成功,没有任何错误。


预期行为

当客户端发出任何类型的 http 请求时,控制台中不会出现 ERR_CONNECTION_REFUSED

附注

这个 Harvin 应用程序在我的本地计算机上运行良好。

最佳答案

我也遇到过类似的问题。

我使用 sendFile 从 Node 提供静态文件,其中包含一些向 http://localhost:8081/api 发送获取请求但总是返回 ERR_CONNECTION_REFUSED。按照您的方式通过 Nginx 设置反向代理解决了这个问题。

现在,任何 url 中没有主机的获取请求都会自动转发到 localhost:8081 套接字。因此,我的请求现在仅从 /api 获取,它被解释为 http://localhost:8081/api

关于node.js - ERR_CONNECTION_REFUSED 带有 nginx 的平均应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com