@baris Good stuff! 👍
Flame graphs - not just for Solaris anymore. Hip, hip, hooray for portable software engineering. 🤸
Those interested in a bit deeper dive may want to check out Brendan Gregg's blog.
What should be the content of the nginx configuration file that I need to use to set up multiple nodebb sites on a server using a MongoDB database?
@kurulumu-Net said in Multiple nodebb sites on the same server:
What should be the content of the nginx configuration file that I need to use to set up multiple nodebb sites on a server using a MongoDB database?
Wowzers! Much depends on how you set them up. Do you favor the subdomains or sub folder approach? I personally prefer subdomains, e.g. "forums.yourdom.tld" - helps keep rewrite rules and such a big "cleaner".
Caveat emptor...
@gotwf I'm wondering how to setup multiple domains like forum.domain.com. I create two separate databases in MongoDb and set up two sites. When I type the domain name of the sites I set up in the browser, it sees that both sites use the same data. It's like two sites but one site.
This is how I create the database. I think it's wrong here.
> use admin
> db.createUser( { user: "admin", pwd: "pass", roles: [ { role: "root", db: "admin" } ] } )
> use nodebb1
> db.createUser( { user: "nodebb1", pwd: "pass", roles: [ { role: "readWrite", db: "nodebb1" }, { role: "clusterMonitor", db: "admin" } ] } )
> use nodebb2
> db.createUser( { user: "nodebb2", pwd: "pass", roles: [ { role: "readWrite", db: "nodebb2" }, { role: "clusterMonitor", db: "admin" } ] } )
Nginx Conf file:
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server_name forum.domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
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";
}
location /ads.txt {
root /home/nodebb/nodebb/public/;
}
real_ip_header CF-Connecting-IP;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
}
server {
listen 80;
listen [::]:80;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
server_name forum.domain.com;
return 301 https://forum.domain.com$request_uri;
}
Have you selected different databases in the config.json
@kurulumu-Net Also, I presume you have properly configured DNS records?
It also looks like you only have one server block in your nginx config.
They are different scripts. Accordingly, they should have different database names, different ports, different nodebb services, different nginx conf files.
And preferably different users
Steps:
In the result browser both domains show the same nodebb instance.
As file path in Nginx conf file;
first site nginx.conf
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root /home/user1/nodebb/public;
server_name forum1.domain1.com;
.
.
.
first site nginx.conf
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/ssl/cert2.pem;
ssl_certificate_key /etc/ssl/key2.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root /home/user2/nodebb/public;
server_name forum1.domain1.com;
.
.
.
@kurulumu-Net forum 1 port 4567, forum2 port 45xx.
2 different platforms cannot use the same port
@kurulumu-Net you can use nginx to listen on one port, but forward the traffic to two different ports based on the requested site.
nginx.confs
server {
server_name serenitymc.net;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
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";
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
include serenitymc.ssl;
}
server {
server_name onpu.serenitymc.net;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4566;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen [::]:443 ssl;
listen 443 ssl;
include serenitymc.ssl;
}
config.json
{
"url": "https://serenitymc.net",
"secret": "xxx",
"database": "mongo",
"mongo": {
"host": "127.0.0.1",
"port": "27017",
"username": "nodebb-serenity",
"password": "xxx",
"database": "nodebb-serenity"
},
"port": "4567"
}
{
"url": "https://onpu.serenitymc.net",
"secret": "xxx",
"database": "mongo",
"mongo": {
"host": "127.0.0.1",
"port": "27017",
"username": "nodebb-onpu",
"password": "xxx",
"database": "nodebb-onpu"
},
"port": "4566"
}