Skip to content

Testing subfolder installation

Bug Reports
  • Continuing from this topic, I tested subfolder installation on a server running in a virtual environment.

    The site mostly works, but I'm getting an error when first loading the front page. It will not load completely and just show a blank page. Eventually after much prodding, it will load.

    On Firefox, the console error says:

     Firefox can't establish a connection to the server at ws://192.168.1.10/forum/socket.io/1/websocket/iGeXqL_AHEkKWOaKkQRF.
    

    And on Chromium, the error shown in the console:

     WebSocket connection to 'ws://192.168.1.10/forum/socket.io/1/websocket/n4YHWE2OK7OPguiNkQQ-' failed: Error during WebSocket handshake: 'Connection' header value is not 'Upgrade' http://192.168.1.10/forum/
    

    When it fails to load the front page, the console error is:

    Failed to load resource: the server responded with a status of 504 (Gateway Time-out) http://192.168.1.10/forum/socket.io/1/xhr-polling/Ntkjy5eI8TikAr5akQRQ?t=1394536265747
    

    Here's the part of the Nginx config relevant to this topic:

    location ^~ /forum {
    
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            #rewrite ^/forum/(.*)$ /$1 break;
    
            proxy_pass http://192.168.1.10:4567;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
        }
    

    @julian, @psychobunny and @baris, what do you make of this?

    Edit: Note that even though the front page does not load, clicking on the menu links work.

  • Still more on this:

    On the ACP, when I click on the Events button, the page fails to load. Instead, I get the notification shown in this screenshot.

    NodeBBerror.png

    But when I look under /var/www/forum, which is the root of the NodeBB installation, the events.log does not exist.

    I think this events.log-related issue only exists in the Edge code, because I do not see it on my site running 0.3.2.

  • What is relative_path in your config.json?

  • @julian

    /forum and that is the only reason why it worked. Without it, trying to access the site at http://192.168.1.10/forum always redirected to http://192.168.1.10/404.

  • And on Firefox, the home and category pages will load to about 80%, and stop. Only after clearing the cache will the loading complete.

  • On the ACP, the Events tab now loads, but there's still no log file in the root of the installation or under the logs directory.

    NodeBBerror1.png

  • i got this issue too.

  • @testerool

    Which one, missing events.log or the issue raised in the original post?

  • @planner missin events.log

  • @planner That's right, with no events logged, it will just show that message. This page doesn't show errors.

  • @julian

    Does that also mean that the events.log file is automatically created only when events are logged? I expect that the file will at least be created and remain empty until events are logged.

  • @planner The file is created when something is logged to it -- otherwise it is not created.

    In unrelated news, latest commits have subfolder installs working again.

    Notes

    • My proxy config's "location" is actually /, not /forum/
    • Git hash: 313c51cfb1fc1df2d44e5a2b5420fe87dd43968c
    • There are still some oddities, but it should be 90% there.
  • @julian

    Yes, it's definitely 90% there, which is why I'm very happy with this.

    However, if my relative path is / and not /forum, ti just does not work.

    Btw, does "failed: Error during WebSocket handshake" reveal anything major?

  • I used a relative_path of /forum as intended, but in my nginx config, the line reads location / {, not location ^~ /forum {

    Perhaps that might get you closer?

    Also, this error: Failed to load resource: the server responded with a status of 504 (Gateway Time-out) http://192.168.1.10/forum/socket.io/1/xhr-polling/Ntkjy5eI8TikAr5akQRQ?t=1394536265747 suggests that your nginx server is < 1.3.13... maybe?

  • suggests that your nginx server is < 1.3.13... maybe?

    @julian

    Yes, Nginx is 1.2.6, but I'm not too worried about that because the production server is running the latest and greatest.

    In my Nginx config I already have a location / { that does something else, so another one of those will throw a duplicate error. FWIW, location ^~ /forum { works for me. The only real issues are specific to NodeBB. Forever, in the ACP's Settings page, clicking on the tabs does not always load the correct tab.

  • For the life of me, @planner, still am not seeing the problems you're encountering! 😄

    However, I did notice that I had to change the proxy_pass line in my config:

    proxy_pass http://127.0.0.1:4567/forum/;
    

    This, in addition to location ^~ /forum/ {, and ensuring that relative_path is set to /forum, and now my NodeBB loads properly:

    Selection_010.png

  • @julian

    Well, mine loads properly too, even with proxy_pass setting:

    proxy_pass http://127.0.0.1:4567;
    

    And adding /forum at the end seems to make no difference.

    The real issue I'm seeing is this: On the Settings page in the ACP, I'm not able to navigate between the tabs. No matter which one I click on, the General tab is still in focus. Can you verify this?

    To illustrate, try matching the URL in this page with the page in focus.

    NodeBBfolder.png

  • No, actually, I haven't been able to reproduce that specific bug 😞

  • @julian

    Well, that's good news. I'll just attribute it to running the wrong version of Nginx (1.2.6) and assume that when I configure the production server to run from a subfolder, that all will be fine. but that won't happen until 0.4.0 is released.

  • @julian,

    I've been posting to a site that's supposed to be the production site once 0.4.0 is released. So I've been running it without the aid of Nginx, just off the built-in server that comes with NodeBB (I think that's Express) and accessing the site from http://linuxbsdos.com:4567

    After testing the subfolder installation in a local installation, I decided to upgrade the soon-to-be production site to the latest code and configure Nginx to proxy serve it from a subfolder. Unfortunately, it's not working like the local installation. I'm getting a 520 Bad Gateway error.

    My Nginx config and json.config are really no different from the ones I used in the local installation. But to make it easier for others to help me troubleshoot, here are the complete settings:

    Nginx config. Note: I've tried proxy_pass http://linuxbsdos.com:4567/forum, but it still didn't work.

    ##
    server {
    
        server_name linuxbsdos.com www.linuxbsdos.com;
        
        ## Your only path reference.
        root /public_html/;
        listen 8080;
    
        index index.html index.htm index.php;
    
        include conf.d/drop;
    
            location / {
                    # This is cool because no php is touched for static content
                            try_files $uri $uri/ /index.php?q=$uri&$args;
            }
    
            location ~ \.php$ {
                fastcgi_buffers 8 256k;
                fastcgi_buffer_size 128k;
                fastcgi_intercept_errors on;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
    
    
            }
    
            location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
                    expires 1d;
            }
    
    ## Settings for proxying NodeBB forum installation. Added March 14 2014.
    
            location ^~ /forum {
    
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4567;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
        }
    
    }
    

    And config.json

    {
        "base_url": "http://127.0.0.1/forum",
        "port": "4567",
        "use_port": true,
        "secret": "secret",
        "bind_address": "0.0.0.0",
        "database": "redis",
        "redis": {
            "host": "127.0.0.1",
            "port": "6379",
            "password": "secret1",
            "database": "0"
        },
        "bcrypt_rounds": 12,
        "upload_path": "/public/uploads",
        "relative_path": ""
    }
    

    From the error logs, I'm getting entries like:

    2014/03/14 22:13:15 [error] 9689#0: *339 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: linuxbsdos.com, request: "GET /forum/forum-43.html HTTP/1.1", upstream: "http://172.143.217.163:4567/forum/forum-43.html", host: "linuxbsdos.com"
    

    I don't know where to look now, but I'm thinking that all the entries in the database have different URLs than what I'm trying to connect with. Is that a factor or should I be looking at other things?

    Should the client IP shown in the error log be 127.0.0.1?

    Hey, @julian, I've updated the settings a lit, basically, tried a little bit of everything, but this is not working in production. Any ideas, clues?

    Btw, I'm running Nginx 1.4.6.


Suggested Topics


Looks like your connection to NodeBB Community was lost, please wait while we try to reconnect.