[Solved] Access to my NodeBB by subdomain

Technical Support
  • Hi there,
    I'm on a Debian 8, and I try to configure my Nodebb for make an access by subdomain.mydomain.com. But, at this moment, after I do a proxy redirection in my Apache config, my Nodebb is available on mydomain.com but available too on my subdomain...
    So, I would like to put only my NodeBB on my subdomain, and leave free the index of my Apache directory 😕

    How can I do that ?

    My Apache configuration :

    <VirtualHost *:80>
            # The ServerName directive sets the request scheme, hostname and port that
            # the server uses to identify itself. This is used when creating
            # redirection URLs. In the context of virtual hosts, the ServerName
            # specifies what hostname must appear in the request's Host: header to
            # match this virtual host. For the default virtual host (this file) this
            # value is not decisive as it is used as a last resort host regardless.
            # However, you must set it for any further virtual host explicitly.
            #ServerName www.example.com
    
            ServerAdmin [email protected]
            DocumentRoot /var/www/html
    
            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # It is also possible to configure the loglevel for particular
            # modules, e.g.
            #LogLevel info ssl:warn
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
            # For most configuration files from conf-available/, which are
            # enabled or disabled at a global level, it is possible to
            # include a line for only one particular virtual host. For example the
            # following line enables the CGI configuration for this host only
            # after it has been globally disabled with "a2disconf".
            #Include conf-available/serve-cgi-bin.conf
    
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
            ProxyPass /socket.io/1/websocket ws://127.0.0.1:4567/socket.io/1/websocket
            ProxyPassReverse /socket.io/1/websocket ws://127.0.0.1:4567/socket.io/1/websocket
            ProxyPass /socket.io/ http://127.0.0.1:4567/socket.io/
            ProxyPassReverse /socket.io/ http://127.0.0.1:4567/socket.io/
            ProxyPass / http://127.0.0.1:4567/
            ProxyPassReverse / http://127.0.0.1:4567/
    
    </VirtualHost>
    
    <VirtualHost *:4567>
    
            Servername subdomain.mydomain.com
            ServerAdmin [email protected]
    
            DocumentRoot /var/www/html/nodebb
            ErrorLog ${APACHE_LOG_DIR}/nodebb-error.log
            CustomLog ${APACHE_LOG_DIR}/nodebb-access.log combined
    
            RewriteEngine on
            RewriteCond %{SERVER_NAME} =subdomain.mydomain.com
            RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    </VirtualHost>
    

    Thanks 😉

  • Can't you just set that up in the DNS config on your domain name ?

  • Have a look at the documentation: https://docs.nodebb.org/configuring/proxies/apache/

    No ServerAlias needed and just put your subdomain.domain.tld as your ServerName.

  • @per0x said in Access to my NodeBB by subdomain:

    Can't you just set that up in the DNS config on your domain name ?

    What do you mean?

    @Dravere thnx, I'm testing this and telling you if it's okay;)

  • @tiiix I mean that in the DNS config, you could redirect mydomain.com to another ip or other domain and on subdomain.mydomain.com redirect to your NodeBB IP location. Thus, Nodebb would only be accessible from the subdomain and not mydomain.com.

  • So, with this configuration, it's ok !

    <VirtualHost *:80>
         
            ServerName mydomain.com
    
            ServerAdmin [email protected]
            DocumentRoot /var/www/html
    
            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # It is also possible to configure the loglevel for particular
            # modules, e.g.
            #LogLevel info ssl:warn
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
            # For most configuration files from conf-available/, which are
            # enabled or disabled at a global level, it is possible to
            # include a line for only one particular virtual host. For example the
            # following line enables the CGI configuration for this host only
            # after it has been globally disabled with "a2disconf".
            #Include conf-available/serve-cgi-bin.conf
    
            <IfModule mod_rewrite.c>
                  RewriteEngine On
                    RewriteRule ^[^\/]*\/(.*) https://mydomain.com/$1 [R=301,L]
            </IfModule>
    
    RewriteCond %{SERVER_NAME} =mydomain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    </VirtualHost>
    
    <VirtualHost *:4567>
        ServerName subdomain.mydomain.com
    
        # Basic security headers
        Header always set X-Content-Type-Options "nosniff"
        Header always set X-Xss-Protection "1; mode=block"
    
        # NodeBB header
        RequestHeader set X-Forwarded-Proto "https"
        # Static file cache
        <FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css)$">
            <IfModule mod_expires.c>
                ExpiresActive on
                ExpiresDefault "access plus 14 days"
                Header set Cache-Control "public"
            </IfModule>
        </FilesMatch>
    
        ProxyRequests off
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
    
        # Custom Error Document when NodeBB is offline
        ProxyPass /error-documents !
        ErrorDocument 503 /error-documents/503.html
        Alias /error-documents path/to/nodebb/public
    
        # Websocket passthrough
        RewriteEngine On
        RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
        RewriteCond %{QUERY_STRING} transport=websocket    [NC]
        RewriteRule /(.*)           ws://localhost:4567/$1 [P,L]
    
        ProxyPass / http://localhost:4567/
        ProxyPassReverse / http://localhost:4567/
    
        # Log stuff
        ErrorLog ${APACHE_LOG_DIR}/nodebb-error.log
        CustomLog ${APACHE_LOG_DIR}/nodebb-access.log combined
        RewriteCond %{SERVER_NAME} =subdomain.mydomain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    </VirtualHost>
    
    

    The problem is that I had not put 2 different ServerName in the config, so all traffic was redirected and rewritten in HTTPS on the same ServerName : subdomain.mydomain.com

  • This post is deleted!


Suggested Topics