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_REFUSEDjavascript。通过完全按照您的方式使用 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

浏览器“ERR_CONNECTION_REFUSED”中的 Ray Dashboard 错误

Spotify 播放按钮 - spotilocal.com 错误 - ERR_CONNECTION_REFUSED