• @Technowix

    I think you dont understand me. I havent tried your solution yet, because I think

     location ~ ^/(images|language|sounds|templates|uploads|vendor|src\/modules|nodebb\.min\.js(\.map)?|stylesheet\.css|admin\.css) {
        root /path/to/nodebb/public/;
        try_files $uri $uri/ @nodebb;

    is going to rewrite the files for mydomain.com/forum/ AND mydomain.com/ - I dont want that.

  • @Technowix

    Well, I simply dont want to use subdomains. Maybe

    location ~ ^/forum/(images|language|sounds|templates|uploads|vendor|src\/modules|nodebb\.min\.js(\.map)?|stylesheet\.css|admin\.css) {
    root /path/to/nodebb/public/;
    try_files $uri $uri/ @nodebb;

    would work?

  • Well, that doesnt work. Could somebody official (@psychobunny, @a_5mith, @julian) give me NGINX and NodeBB config files which allow the use of NodeBB over https://domain.tld/forum/? Help would be much appreciated.

  • The location for the files is prepended by a /.
    For your aim it has to be removed. source

    <link rel="stylesheet" type="text/css" href="/stylesheet.css?xxxxx">


    <link rel="stylesheet" type="text/css" href="stylesheet.css?xxxxx">

    For this to work code would have to be rewritten. Good luck with this.

    Why do you want to make your live harder with constantly avoiding subdomains.
    They are much cleaner. And I think "the officials" will not come to "rescue" you.

  • @silasrech To add to what @termnml has said, My default instinct was to recommend you use a subdomain, as I'm not 100% that subfolders are really "supported". But I'm sure someone will give you a definitive answer. Unfortunately I'm also not really official. 😛 Have a read through this topic it contains some config settings etc to get it working as a subfolder.

  • Any correctly matched, arbitrary , location block should work.

    If I was better at them, I'd provide an example. 🙂 Sorry.

    Fortunately, there are much smarter people than I out there who have done this - with Ghost. You should be able to use this while only changing the target port.

    An alternate hack would be to put a redirect on a subdirectory location block sending it to the subdomain config. Kinda fugly, but. 🙂

  • After one year and diving deep into NGINX configuration and Node development I've finally found a solution for using subfolders with NGINX and NodeBB:

    NGINX configuration:

    server {
        listen 443 ssl;
        listen 80;
        listen [::]:443 ssl;
        listen [::]:80;
        server_name domain.tld;
        index index.html;
        location ^~ /community {
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header Referer           $http_referer;
            proxy_set_header Host              $host;
            proxy_set_header Cookie            $http_cookie;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port  $server_port;
            proxy_set_header X-NginX-Proxy     true;
            proxy_redirect                     off;
            proxy_http_version                 1.1;
            proxy_pass                         http://localhost:<port>;
        location / {
             // stuff for your main app

    NodeBB configuration part:

        "url": "https://domain.tld/community"

  • @lenovouser it is already mentioned in the documentation, if I am not mistaken.

  • @lenovouser Yeah, I got that working pretty easily based on the docs. I did change from that to using a subdomain, though, because it just makes relative urls much easier.

  • I can't find it in the documentation. You also find a lot of people asking for it, like me, if you search for it:


  • @lenovouser here it is

    Edit: while that doesn't explain it entirely, you really only need to change the location in the Nginx and the URL in the config.

  • Hm.

    Just changing

    location /


    location /community

    will definitely not work. I've tried that. You need the ^~ to make it work.

  • @lenovouser it worked for me first time. There must be something else going on with your configuration. Maybe it's the SSL or something, since my test server was just running on 80.

  • Might be, but I don't know how SSL should interfere with location blocks. Might spin a droplet up sometime later this day and test it.

  • Actually, you see what the error is if you look at my first 2 posts.

  • @lenovouser Your method works fine for me over https. Thanks for your persistence.

    edit: I just had to add in these two lines for socket.io to work.
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

Suggested Topics

  • 6
  • 11
  • 5
  • 6
  • 41
| | | |