簡體   English   中英

使用2個Express應用阻止私人端口NGINX反向代理

[英]Block private port NGINX reverse proxy with 2 express apps

我試圖在同一台服務器上運行兩個Express應用程序(一個是公共API,另一個是與數據庫對話的私有API)。

我已經設置nginx來反向代理到運行在端口3000上的公共快遞應用程序,並使用來自數字海洋的私有IP。

我的公共快遞應用將請求發送到專用api(在端口3030上運行)

當我轉到我的域example.com:3030/users時-我可以看到所有用戶。 (壞)。

如何鎖定公眾的3030端口(即:website.com/:3030/API-ROUTE)?

nginx設置:

server {
    listen 80;

    server_name 123.456.78.910;

    root /srv/www;

    location / {
        root /srv/www/public;
        try_files $uri/maintenance.html @node_app;
    }

    location @node_app {

        proxy_pass http://98.765.4.32:3000;
        proxy_http_version 1.1;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

公開API

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello public World!');
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

私人API

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello Private World!');
});

app.listen(3030, function () {
  console.log('Example app listening on port 3030!');
});

您可以在多個層上鎖定對該端口的訪問。

首先,在Node.js中,您可以告訴Node.js應用程序綁定到特定的IP地址,即127.0.0.1:

app.listen(3030, '127.0.0.1');

接下來,您可以在操作系統級別鎖定訪問權限。 例如,在Ubuntu Linux中,您可以使用ufw定義一個規則,該規則僅允許從本地主機訪問該端口。

最后,外部設備上其他位置的防火牆規則可能會限制訪問。 例如,對於AWS安全組,您可以定義一個規則,即僅允許該組中的其他服務器訪問特定組中的服務器的端口3030-該組中可能只有一個服務器。

還有一種方法是偵聽Unix套接字而不是IP地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM