ERR_CONNECTION_REFUSED 平均应用与 nginx
Posted
技术标签:
【中文标题】ERR_CONNECTION_REFUSED 平均应用与 nginx【英文标题】:ERR_CONNECTION_REFUSED Mean app with nginx 【发布时间】: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。 【参考方案1】:我也遇到过类似的问题。
我使用sendFile
从节点提供静态文件,其中包括一些向http://localhost:8081/api
发送获取请求但总是返回ERR_CONNECTION_REFUSED
的javascript。通过完全按照您的方式使用 Nginx 设置反向代理来解决它。
现在任何在其 url 中没有主机的 fetch 请求都会自动转发到 localhost:8081
套接字。所以,我的请求现在只从/api
获取,它被解释为http://localhost:8081/api
。
【讨论】:
以上是关于ERR_CONNECTION_REFUSED 平均应用与 nginx的主要内容,如果未能解决你的问题,请参考以下文章
失败:连接建立错误:net::ERR_CONNECTION_REFUSED
Angular6 - GET net::ERR_CONNECTION_REFUSED 的 HttpClient 错误处理
POST http://localhost:9000/net::ERR_CONNECTION_REFUSED
Vue:net::ERR_CONNECTION_REFUSED