Apache2 / NodeJS / Express on a Digital Ocean ServeR语言 如何侦听没



我是服务器环境中nodejs的新手,并试图弄清楚如何使其与我在数字海洋服务器上运行的所有其他东西结合使用。

我成功地在数字海洋上的子域上设置了一个沙盒环境,在该子域中,我有一个快速服务器侦听来自端口 3000 的请求。然后,从端口 3000 上的 Web 浏览器,我可以向节点服务器发出 ajax GET 请求,并检索响应。

但是,现在我正在尝试将该沙盒环境实现到一个新的子域中,在那里我正在运行工艺 PHP CMS。这将从默认端口 80 运行。所以我希望我的节点服务器能够侦听来自端口 80 的请求。但是在我说之前:

app.listen(3000, function () {
console.log('listening')
})

如果我尝试从端口 3000 运行工艺,它会为 URL 路由抛出错误:Cannot GET [url_segments]

因为它旨在查找来自端口 80(默认 Web 端口)的请求。如果我更改快速服务器以侦听端口 80,它会给出一个错误,指出该地址正在使用中。

> node app.js:
Error: listen EADDRINUSE :::80

如何app.js只收听我的数字海洋服务器上的默认公共 html 端口而没有此 EADDRINUSE 错误?我希望人们访问我的子域名:

http://subdomain.domain.com/episodes/episode-2

并让它能够通过 AJAX 向我的快速服务器拨打电话:

var urlParams = new URLSearchParams(window.location.search);
var startDate = urlParams.get('start');
var endDate = urlParams.get('end');
var urlWithParams = "/list?start=" + startDate + "&end=" + endDate;
$.ajax({
method: "GET",
url: urlWithParams,
}).done(function (data) {
//do stuff
})

其中,我的快速服务器上的列表功能如下所示:

let app = express()
app.get('/list', (request, response) => {
//DO STUFF
}

我在使用 Ubuntu 14.04 和 Apache2 的数字海洋服务器上

您需要使用代理。

nginx示例:

server {
listen 80;
server_name subdomain.domain.com
location / {
proxy_pass http://localhost:3000;
}   
}

阿帕奇:

<VirtualHost *:*>
ProxyPass / http://0.0.0.0:3000/
ServerName localhost
</VirtualHost>

更多信息在这里

最新更新