How to create subdomain for user in node.js
As I mentioned in OP comments, using Nginx webserver in front of Node would be very good option, since this is a secure way to listen 80 port. You can also serve static files (scripts, styles, images, fonts, etc.) more efficiently, as well as have multiple sites within a single server, with Nginx.
As for your question, with Nginx, you can listen both example.com
and all its subdomains, and then pass subdomain to Node as a custom request header (X-Subdomain
).
example.com.conf:
server { listen *:80; server_name example.com *.example.com; set $subdomain ""; if ($host ~ ^(.*)\.example\.com$) { set $subdomain $1; } location / { proxy_pass http://127.0.0.1:3000; proxy_set_header X-Subdomain $subdomain; }}
app.js:
var express = require('express');var app = express();app.get('/', function(req, res) { res.end('Subdomain: ' + req.headers['x-subdomain']);});app.listen(3000);
This is a brief example of using Nginx and Node together. You can see more detailed example with explanation here.