Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点:端口443需要提升的权限错误_Node.js_Ssl_Https_Pm2 - Fatal编程技术网

Node.js 节点:端口443需要提升的权限错误

Node.js 节点:端口443需要提升的权限错误,node.js,ssl,https,pm2,Node.js,Ssl,Https,Pm2,我使用PM2启动应用程序,并在启动应用程序时将PORT=443作为参数传递。但是,它返回时会显示一个错误:“端口443需要提升的权限”。尽管我已经使用openssl生成了证书和密钥,并在代码中引用了它们。感谢您的支持 #!/usr/bin/env node var app = require('../app'); var debug = require('debug')('ls-templates-server:server'); var https = require('https'); v

我使用PM2启动应用程序,并在启动应用程序时将PORT=443作为参数传递。但是,它返回时会显示一个错误:“端口443需要提升的权限”。尽管我已经使用openssl生成了证书和密钥,并在代码中引用了它们。感谢您的支持

#!/usr/bin/env node

var app = require('../app');
var debug = require('debug')('ls-templates-server:server');
var https = require('https');
var fs = require('fs');
/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);


var options = {
  key: fs.readFileSync('/home/admin/cert/server.key'),
  cert: fs.readFileSync('/home/admin/cert/server.cert')
};

var httpsServer = https.createServer(options, app);

/* for https (production stage) */

httpsServer.listen(port, "0.0.0.0");
httpsServer.on('error', onError);
httpsServer.on('listening', onListening);


/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}


/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = httpsServer.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

选项1。

sudo

如果不起作用,请使用
authbind

sudo apt-get install authbind
sudo touch /etc/authbind/byport/443
sudo chown %user% /etc/authbind/byport/443
sudo chmod 755 /etc/authbind/byport/443
编辑
~/.bashrc
文件并添加

+alias pm2='authbind --deep pm2'
在文件的末尾,然后运行

source ~/.bashrc
最后,确保使用authbind更新pm2:

authbind --deep pm2 update
选项2

使用不同的
端口
并使用
Nginx
反向代理
应用程序

把你的端口改为3000

在Nginx中,创建一个服务器块,将请求转发给应用程序

服务器块,例如:

server {
    #listen [::]:80;

    server_name your-domain.com

    #root /var/www/example.com;
    #index index.html;

        client_max_body_size 20M;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://localhost:3000;
      proxy_redirect off;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_connect_timeout       500000;
      proxy_send_timeout          500000;
      proxy_read_timeout          500000;
      send_timeout                500000;
    }



        listen 443 ssl;
        ssl_certificate /home/admin/cert/server.cert;
        ssl_certificate_key /home/admin/cert/server.key;


        if ($scheme = http) {
        return 301 https://$server_name$request_uri;
        }



}
最好使用
Nginx
/
Authbind
方法,最好以特权用户身份尽可能少地运行,因为您希望在有人利用您的程序时限制潜在的损害。您不想以root用户身份运行节点代码,除非您必须这样做

提及


选项1。

sudo

如果不起作用,请使用
authbind

sudo apt-get install authbind
sudo touch /etc/authbind/byport/443
sudo chown %user% /etc/authbind/byport/443
sudo chmod 755 /etc/authbind/byport/443
编辑
~/.bashrc
文件并添加

+alias pm2='authbind --deep pm2'
在文件的末尾,然后运行

source ~/.bashrc
最后,确保使用authbind更新pm2:

authbind --deep pm2 update
选项2

使用不同的
端口
并使用
Nginx
反向代理
应用程序

把你的端口改为3000

在Nginx中,创建一个服务器块,将请求转发给应用程序

服务器块,例如:

server {
    #listen [::]:80;

    server_name your-domain.com

    #root /var/www/example.com;
    #index index.html;

        client_max_body_size 20M;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://localhost:3000;
      proxy_redirect off;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_connect_timeout       500000;
      proxy_send_timeout          500000;
      proxy_read_timeout          500000;
      send_timeout                500000;
    }



        listen 443 ssl;
        ssl_certificate /home/admin/cert/server.cert;
        ssl_certificate_key /home/admin/cert/server.key;


        if ($scheme = http) {
        return 301 https://$server_name$request_uri;
        }



}
最好使用
Nginx
/
Authbind
方法,最好以特权用户身份尽可能少地运行,因为您希望在有人利用您的程序时限制潜在的损害。您不想以root用户身份运行节点代码,除非您必须这样做

提及


PM2还不够吗?最好使用Nginx方法,最好以特权用户的身份尽可能少地运行,因为您希望在有人利用您的程序时限制潜在的损害。您不想以root用户身份运行节点代码,除非您必须这样做。有错误吗?除了“端口443需要提升的权限”之外,PM2还不够吗?最好使用Nginx方法,最好尽可能少地以特权用户的身份运行,因为您希望在有人利用您的程序时限制潜在的损害。您不想以root用户身份运行节点代码,除非您必须这样做。有错误吗?除“端口443需要提升权限”外,请参阅