【发布时间】:2016-01-18 22:52:32
【问题描述】:
我试图在同一台服务器上运行两个快速应用程序(一个是公共 API,另一个是与数据库通信的私有 API)。
我已将 nginx 设置为反向代理到我在端口 3000 上运行的公共快递应用程序,该应用程序具有来自数字海洋的私有 IP。
我的公共快递应用向私有 api 发送请求(在端口 3030 上运行)
当我转到我的域 example.com:3030/users - 我可以看到我的所有用户。 (坏的)。
如何从公众(即:website.com/:3030/API-ROUTE)锁定端口 3030?
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!');
});
【问题讨论】: