Installing NodeBB in a subfolder of another site
-
Ok, so I tried a new local installation in a subfolder and here's what happened
I can specify
http://ip-address/subfolder
during installation and answer n when asked if the application should connect via a port number. However, it seems that NodeBB is ignoring that, because of this output on starting it.info: Initializing NodeBB v0.3.0, on port 4567, using redis store at 127.0.0.1:6379. info: NodeBB instance bound to: Any address (0.0.0.0) info: Using ports 80 and 443 is not recommend; use a proxy instead. See README.md info: NodeBB Ready
And if I navigate to http://ip-address/forum, I get redirected to http://ip-address:4567/forum
Note that this is without messing with Nginx yet, but @baris, @julian, @psychobunny, what do you make of NodeBB ignoring the do-not-connect-via-port-number directive?
-
-
And if I navigate to http://ip-address/forum, I get redirected to http://ip-address:4567/forum
Hm, if you specified port 4567 in the setup, NodeBB does not listen on port 80, so I don't quite know why you got redirected when accessing
/forum
with no port. In any case, I've confirmed that NodeBB does listen on the port you specify during setup. If you have not set up the proxy yet, you will not be able to access your site without a port number... -
Here's my config.json:
{ "base_url": "http://192.168.1.4", "port": "4567", "use_port": false, "secret": "fff02b17-b9cc-444c-b929-85ec9cecec93", "bind_address": "0.0.0.0", "database": "redis", "redis": { "host": "127.0.0.1", "port": "6379", "password": "redis", "database": "0" }, "bcrypt_rounds": 12, "upload_path": "/public/uploads", "relative_path": "/forum"
It shows that even after telling it not to connect via port 4567, it still did anyway.
-
@baris, @julian, @psychobunny, I'm still on this.
If I modify the code given here for the subfolder installation to look like this:
upstream nodejs { server 192.168.1.4:4567; } server { listen 80; server_name 192.168.1.4:4567; root /var/www/forum; 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://192.168.1.4:4567; proxy_redirect off; # Socket.IO Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
I get a 403 Forbidden error message when I attempt to access http://ip-address/forum.
And if I replace
server_name 192.168.1.4:4567;
withserver_name 192.168.1.4/forum;
.nginx -t
reports"nginx: [warn] server name "127.0.0.1/forum" has suspicious symbols in /etc/nginx/sites-enabled/default:91
Note that NodeBB (nodejs) is listening on the default port, even though I didn't want it to.
Any suggestions?
-
NodeBB has to listen on a port. It could listen on a UNIX socket, but that's outside of the scope of this question (and is pretty pointless, anyway).
Given your nginx config, please make the following changes:
- Remove the
upstream
portion, as you don't seem to be referencing it anymore - Remove the
root
directive, it is not required server_name
should be192.168.1.4
, no port
nginx -t
should work then, and you can restart it and try again.nginx: [warn] server name "127.0.0.1/forum" has suspicious symbols in /etc/nginx/sites-enabled/default:91
If you still get this error, take a look at what's on line 91 of
default
..! - Remove the
-
I'm getting warmer. Here's what I did:
I just added the code below into the default server block, that is, no separate server block for NodeBB.
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://192.168.1.4:4567; proxy_redirect off; }
Navigated to http://ip-address/forum and got the default page, minus the default categories. And clicking on any of the buttons returns nothing. No error messages in the log files.
I'll recircle back to the previous attempt, but what do you make of this?
Here's a screenshot:
-
GET http://192.168.1.4/forum/404 404 (Not Found) 192.168.1.4/:25 Uncaught ReferenceError: io is not defined nodebb.min.js:7 Uncaught TypeError: Cannot set property 'initialLoad' of undefined 192.168.1.4/:270 Uncaught ReferenceError: templates is not defined nodebb.min.js:8 Uncaught TypeError: Cannot call method 'emit' of undefined
That's the type of messages on clicking on any link.
In Nginx's access.log, I get lines like:
"GET /forum/api/config HTTP/1.1" 200 265 "http://192.168.1.4/forum/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
Nothing in Nginx's error.log.
Btw, clicking on the Unread link loads the default Nginx page.
-
Ok, @baris, @julian, @psychobunny, I think I've gone the whole nine yards on this. The problem is most likely that NodeBB is not at the state where it can be installed and work correctly in a subfolder. The best I've been able to get, is a blank home page with header links that don't work.
I'll just keep adding content to the live site and hope that somebody takes a shot at fixing it before it goes live.
If you guys want to use me as a test case, go right ahead!
-
The last time I tried subfolder installation it was working fine, but I never tried it with nginx proxying. So I suggest you take out all the nginx proxying first and try it with
http://domain.com:4567/forum
if that is working then figure out proxying.