我有2个网络应用程序在 XX.XX.XX.XX / 和 XX.XX.XX.XX / harvin 上运行,其中一个只是节点-express和另一个分别是MEAN堆栈应用程序。它们配置为 nginx ,如下所示
# 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' app(MEAN app)。 这是我的 app.js 文件,其中包含CORS(跨域资源共享)配置。
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的客户端( Harvin)( localhost:8081 / api / login )发出任何类型的请求(例如登录或注册等)时MEAN app)然后控制台显示 ERR_CONNECTION_REFUSED 。
即使morgan也没有记录任何类型的登录请求。
例外 Harvin的主页已成功加载,没有任何错误。
这款Harvin应用程序在我的本地机器上运行完美。
答案 0 :(得分:0)
我有类似的问题。
我正在使用sendFile
从节点提供静态文件,其中包括一些向http://localhost:8081/api
发送提取请求但总是返回ERR_CONNECTION_REFUSED
的JavaScript。通过与Nginx完全一样的方式设置反向代理来解决该问题。
现在,URL中没有主机的所有提取请求都将自动转发到localhost:8081
套接字。因此,我的请求现在仅从解释为/api
的{{1}}中获取。