Node.js 节点:端口443需要提升的权限错误
我使用PM2启动应用程序,并在启动应用程序时将PORT=443作为参数传递。但是,它返回时会显示一个错误:“端口443需要提升的权限”。尽管我已经使用openssl生成了证书和密钥,并在代码中引用了它们。感谢您的支持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
#!/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需要提升权限”外,请参阅