如何在端口 80 上 运行 环回应用程序

How can I run loopback application on port 80

我正在使用基于 expressjs 的 loopback.io,我尝试将端口添加为 app.listen 的第一个参数,如下所示:

// server.js

app.start = function() {
  // start the web server
  return app.listen(80, function() {
    app.emit('started');
    console.log('Web server listening at: %s', app.get('url'));
  });
};

但是不行。

我一直在寻找这个,但我还没有找到解决方案。

这与在 Express 中看到的问题类似;一个这样的答案在这里 Node.js + Express: app won't start listening on port 80

我没有在文档中看到它的明确说明,但也遇到了监听端口 80 需要 sudo (root) 的问题。 loopback.js 文档 https://apidocs.strongloop.com/loopback/#app-listen states that your call is just passed to the HTTP Server class https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback 但您的格式也与 Express 的格式匹配(因此第一个 link)。

您的错误消息将有助于了解是 root 访问权限问题还是其他问题。

更改 server/config.json 中的 port 属性。参见 https://github.com/strongloop/loopback-sandbox/blob/master/server/config.json#L4

我需要动态设置端口,以便在开发中为 3001,在生产中为 80。这对我有用:

app.start = function() {  
  //change the port if needed for production  
  if (process.env.PORT) {  
    app.set('port', process.env.PORT);
  }

  // start the web server
  return app.listen(function() {
...
{
  "restApiRoot": "/api",
  "host": "0.0.0.0",
  "port": 80,
  "remoting": {
    "context": false,
    "rest": {
      "normalizeHttpPath": false,
      "xml": false
    },
    "json": {
      "limit": "50mb"
    },
    "urlencoded": {
      "limit": "50mb",
      "extended": true
    },
    "handleErrors": false
  },
  "legacyExplorer": false,
  "logoutSessionsOnSensitiveChanges": true
}

请参考这个server/config.json示例。

如果您使用的是 loopback x3,您需要创建一个名为 server/config.local.json 的文件。然后将server/config.json中的所有文件复制进去。现在,将您需要的 "your port number" 添加到 server/config.local.json 中的 "port property",它将起作用。

详情见原文:https://loopback.io/doc/en/lb3/Environment-specific-configuration.html#application-wide-configuration