• Plugin & Theme Dev

    @Aureney If you've done everything right, yes.


  • Here is my working NGINX config:

       server {
                  listen       80;
                  server_name  plansForum.cmerdc.org;
                  client_max_body_size 5M;
       
       
              location / {
       
       			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";
                  }
           }
    

    You should be able to use it as is except for the server_name which must, of course be changed to your domain.


  • If the mention of including Apache/PHP was intentional, you can use this config section as a model:

       server {
                  listen       80;
                  server_name  cmerdc.org;
       
              location / {
                   proxy_set_header X-Real-IP  $remote_addr;
                   proxy_set_header X-Forwarded-For $remote_addr;
                   proxy_set_header Host $host;
        
                   proxy_pass http://127.0.0.1:8080;
                  }
           }  
    

    You will have to change the port Apache listens to to be 8080 (or whatever you choose). In my Ubuntu installation, that is done in the file

       /etc/apache2/ports.conf 
    

    Don't forget to restart Apache and test it by going curl'ing http://127.0.0.1:8080.

    And, of course, the server_name has to match your domain.


  • @tqwhite I think this might be the problem. I installed nginx following this guide and the NodeBB forum is already running and using 0.0.0.0:4567. I also don't have an apache2 folder. Regular "my-domain.org" links to nginx, and the "my-domain.org:4567" links to the actual forum. I can't see anything else I did wrong.


  • @Aureney Post your nginx configuration so that it may be reviewed.

  • Plugin & Theme Dev

    @Aureney You're following the wrong docs. Those docs are intended for static file delivery, not for a node.js application that is already listening to a port (like NodeBB does).

    listen 4567; within nginx says you want to listen for requests to example.com:4567.
    If you want to listen to http requests for example.com you need to listen 80;.
    You now need to internally forward (proxy) those requests to the port on which NodeBB is listening (4567 by default). Take a look at the docs I've referenced above for examples of correct configurations.


  • Along the lines of @frissdiegurke, but to go one step further you can have your forum on a port other than 80/443 but it cannot be the same port that NodeBB is actually operating on.

    Specifically you can't have your Nginx or Apache listening on port 4567 and then proxying to socket.io also on port 4567. Either chose a different port for the web access or in your NodeBB config.json change NodeBB to run on a different port.


  • @Aureney Here are some questions...

    What operating system are you working with?

    If it's a Linux (or OS X), what happens when you type

    curl http://0.0.0.0:4567
    

    and, since I guess that does nothing, what happens with

    curl http://127.0.0.1:4567
    

    If you are using Windows, well, I googled "windows curl equivalent" and was reminded that I'm really glad I don't use Windows. You might find it more useful.

    After that, what do you see at

    /var/log/nginx/error.log
    

    If you need more help. I'll check here again later today.

    Good luck.


  • One more thing. My Nginx version is 1.10.0/installed by homebrew, and it doesn't look similar at all to the docs. I don't get the same configuration and options as it.

    I don't have apache either.


  • @rod said in How to replace localhost:4567 with domain name:

    @Aureney Post your nginx configuration so that it may be reviewed.


  • @Aureney I take it, then, that you are running this on OS X on your Macintosh, right?

    NGINX is presently at 1.11.something. I am running 1.9 on my Macbook and the snippet syntax I posted works. So, the version is not the problem.

    If you run

    nginx -t
    

    nginx will evaluate your config file and tell you about errors. It will also tell you the config file path.

    One error it might report is 'access denied' for the .pid file. This is a result of running nginx without 'sudo'. Unless you did something special, running NGINX requires sudo.

    Also, you did report on the curl tests I asked about previously. Please do.


  • @rod

            listen       443;
            server_name  domainnamehere.com;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://0.0.0.0:4567/;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
    
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    

    @tqwhite Get this, even though nginx doesn't work

    nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
    

    and on the curl tests, same error

    
    2016/05/25 16:59:40 [emerg] 4670#0: bind() to 0.0.0.0:4567 failed (48: Address already in use)
    2016/05/25 16:59:40 [emerg] 4670#0: bind() to 0.0.0.0:4567 failed (48: Address already in use)
    2016/05/25 16:59:40 [emerg] 4670#0: bind() to 0.0.0.0:4567 failed (48: Address already in use)
    2016/05/25 16:59:40 [emerg] 4670#0: bind() to 0.0.0.0:4567 failed (48: Address already in use)
    2016/05/25 16:59:40 [emerg] 4670#0: bind() to 0.0.0.0:4567 failed (48: Address already in use)
    2016/05/25 16:59:40 [emerg] 4670#0: still could not bind()

  • @Aureney You don't have any proxy commands to handle traffic between your https (port 443) traffic and the NodeBB forum running internally on port 4567 (the default unless you changed it in your config.json)

    You may need a block similar to this:

        location / {
            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";
        }
    

  • @tqwhite said in How to replace localhost:4567 with domain name:

    If you are using Windows, well, I googled "windows curl equivalent" and was reminded that I'm really glad I don't use Windows. You might find it more useful.

    Slighty OT but theres no equivalent you just use curl like on any other platform..


  • @rod I copied that entire thing word for word and got the same error on and on.

            listen       80;
            server_name  domainnamehere.com;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    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";
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:80;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    

    Error I get:

    nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
    

    I think I didn't install nginx the right way. How do I do it?


  • @Aureney Something is already running on port 80.

    run netstat -tulpn and see what the output shows. If you get a - for the program name you need to run as root. In that case try sudo netstat -tulpn

    Is this Linux?


  • @rod Neither of those commands work

    netstat: n: unknown or uninstrumented protocol

    It's not Linux

    I checked localhost:80 and it's a blank page saying:

    404 Not Found


    nginx/1.10.0

    I went to my domain and the same thing appears.


  • @Aureney Google will be a good resource for you. I am out of suggestions without more information and, well, I am too tired to try to coax every detail from you.


  • This post is deleted!

  • @Aureney

    We need the following things answered in order to debug your problem.

    • You appear to be running this forum on an OS X computer. I asked about this before but you didn't answer. Are you using OS X?

    • The fact that you are getting a 404 page says that you have a web server of some sort already listening on port 80. Execute the following command (assuming you are on OS X) and paste the result into a reply.

      sudo lsof -i tcp:80 | grep LISTEN

    • Please report what happens when you enter

      curl http://127.0.0.1:4567

    • When you are trying to access this forum, are you using a web browser that is on the same computer as nodebb and NGINX?

    It is very unlikely that your installation of NGINX is the problem.

Suggested Topics

  • 73
  • 2
  • 1
  • 9
  • 4
| |