title: Node.js https server: Can't listen to port 443 - Why?
body: <p>I'm creating a an HTTPS server for the first time in Node, and the code (see below) works for a random port like 6643 but on port 443, it won't work. I get this error:</p>
  
  <pre><code>[Debug][Server]: Initialized...
  [Debug][Control Center]: Application initialized...
  
  events.js:72
          throw er; // Unhandled 'error' event
                ^
  Error: listen EACCES
      at errnoException (net.js:904:11)
      at Server._listen2 (net.js:1023:19)
      at listen (net.js:1064:10)
      at Server.listen (net.js:1138:5)
      at Object.module.exports.router (/home/ec2-user/Officeball/Versions/officeball_v0.0.5/server/custom_modules/server.js:52:5)
      at Object.&lt;anonymous&gt; (/home/ec2-user/Officeball/Versions/officeball_v0.0.5/server/control_center.js:15:59)
      at Module._compile (module.js:456:26)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
  </code></pre>
  
  <p>This is on an Amazon Linux EC2 server. It's my understanding that once I set my domain's DNS A Name Record to the server's IP, when a user searches <a href="https://mydomain.com" rel="noreferrer">https://mydomain.com</a>, the browser will look up my server's IP at port 443, which is supposedly the standard port for HTTPS traffic.</p>
  
  <p>So my understanding is that I need to serve https content via port 443.</p>
  
  <p><strong>What am I doing wrong?</strong></p>
  
  <hr>
  
  <p><strong>Here's my server code:</strong></p>
  
  <p><em>control_center.js (init)</em></p>
  
  <pre><code>/* Control Center */
  
  //DEFINE GLOBALS
  
  preloaded = {};
  
  //GET DIRECT WORKING PATH
  
  var dirPath = process.cwd();
  
  //REQUIRE CUSTOM MODULES 
  
  var debug = new (require(dirPath + 
          "/custom_modules/debug"))("Control Center");
  var socket = require(dirPath + 
          "/custom_modules/socket")(4546);
  
  // ! this is the relevant line
  var server = require(dirPath + "/custom_modules/server").router(443);
  
  //APP INITIALIZE
  
  debug.log("Application initialized...");
  </code></pre>
  
  <p><em>server.js</em></p>
  
  <pre><code>/* Server */
  
  //REQUIRE NPM MODULES
  
  var fs      = require('fs'), 
      https   = require('https'), 
      url     = require('url'), 
      path    = require('path');
  
  //GET DIRECT WORKING PATH
  
  var dirPath = process.cwd();
  
  //REQUIRE CUSTOM MODULES
  
  //Snip!
  
  var debug = new (require(dirPath + 
          "/custom_modules/debug"))("Server");
  
  //Preload requests
  
  var preload = require(dirPath + 
          '/custom_modules/preload').init();
  
  //INIT MODULE 
  
  debug.log("Initialized...");
  
  //DEFINE MODULE VARIABLES
  
  var options = {
    key: fs.readFileSync('SSL/evisiion_private_key.pem'),
    cert: fs.readFileSync('SSL/evisiion_ssl_cert.pem')
  };
  
  //LISTEN FOR PATH REQUESTS
  
  //route requests to server
  module.exports.router = function(port) {
      https.createServer(options, function(req, res) {
  
          //Snip!
  
      }).listen(port);
  };
  </code></pre>