Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create subdomain for user in node.js

I'd like to share some user information at username.domain.com at my application. Subdomain should be available after user create his account.

I have found nice module that could be useful in that case: Express Subdomain

How can I do it properly using that module? Maybe this module isn't so useful so which one should I use?

like image 273
Abdizriel Avatar asked Jun 20 '15 07:06

Abdizriel


People also ask

Can you make your own subdomain?

Rather than registering a new domain name, you can always create a subdomain using your existing domain name. A subdomain is an addon to your primary domain with its unique content. It is a separate part of your website that operates under the same primary domain name without you purchasing a new domain.


1 Answers

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.

like image 64
Oleg Avatar answered Sep 30 '22 05:09

Oleg