【问题标题】:ERR_CONNECTION_REFUSED Mean app with nginxERR_CONNECTION_REFUSED 平均应用与 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。

标签: node.js angular nginx mean-stack


【解决方案1】:

我也遇到过类似的问题。

我使用sendFile 从节点提供静态文件,其中包括一些向http://localhost:8081/api 发送获取请求但总是返回ERR_CONNECTION_REFUSED 的javascript。通过完全按照您的方式使用 Nginx 设置反向代理来解决它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多