>

PM2를 사용하여 응용 프로그램을 시작하고 응용 프로그램을 시작하는 동안 PORT = 443을 매개 변수로 전달합니다. 그러나 "PORT 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

    옵션 1

    PM2 실행   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'
    
    

    pm2가 authbind로 업데이트되었는지 확인하십시오 :

    source ~/.bashrc
    
    

    옵션 2

    다른 authbind --deep pm2 update 사용   PORT 를 사용하십시오.   Nginx 로  귀하의 응용 프로그램

    예 : 포트를 3000으로 변경

    Nginx에서 요청을 응용 프로그램으로 전달하는 서버 블록을 만듭니다.

    서버 블록 예 :

    reverse proxy
    
    

    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  방법, 누군가가 귀하의 프로그램을 악용하는 경우 잠재적 손상을 제한하고자하므로 권한있는 사용자만큼 가능한 한 적게 실행하는 것이 좋습니다. 꼭 필요한 경우가 아니면 루트로 노드 코드를 실행하고 싶지 않습니다.

    참조 https://pm2.keymetrics.io/docs/usage/specifics/#listening-on-port-80-w-o-root

    https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps

    Authbind

  • 이전 Blazor에서 Google지도 실행
  • 다음 android - 플러터 목록 값이 업데이트되지 않음