【发布时间】:2018-05-14 17:03:40
【问题描述】:
我有 2 个在 XX.XX.XX.XX/ 和 XX.XX.XX.XX/harvin 上运行的网络应用程序,其中一个是唯一的节点-express 和另一个分别是 MEAN 堆栈应用程序。它们配置有 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 ( MEAN app),然后控制台显示 ERR_CONNECTION_REFUSED。
即使morgan 也没有记录任何类型的登录请求。
异常 Harvin 主页加载成功,没有任何错误。
预期行为
当客户端发出任何类型的 http 请求时,控制台中没有 ERR_CONNECTION_REFUSED。
附言
这个 Harvin 应用在我的本地机器上运行良好。
【问题讨论】:
-
经过几次尝试和尝试,我发现如果我在请求 URL 中省略“localhost:8081”,它就不会再抱怨 ERR_CONNECTION_REFUSED。
标签: node.js angular nginx mean-stack