1

I know most people do it backwards (apache to nginx), but the server where this project is hosted has other projects with particular configurations so... it's better to stick with what we have

What I'm trying to accomnplish is migrate an nginx virtual host configuration, for the centrifugo golang messaging server, to apache2.4 from the docs example

This is what I have

#### This part it's commented because the server says it has incorrect syntax
# <Proxy "balancer://centrifugocluster"> {
    # Enumerate all upstream servers here, in case you want to clusterize

    # BalancerMember http://127.0.0.1:8000 # default host and port, change it if need it
    # BalancerMember http://127.0.0.1:8001;
# </Proxy>
# ProxyPass / balancer://centrifugocluster/



<VirtualHost *:80>
    ServerName centrifugo.MY_HOSTING.com
    Redirect permanent ^(.*) https://centrifugo.MY_HOSTING.com/$1
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName centrifugo.MY_HOSTING.com

        SSLEngine On
        SSLCertificateFile /PATH/TO/CRT/FILE.crt
        SSLCertificateKeyFile /PATH/TO/KEY/FILE.key
        SSLCertificateChainFile /PATH/TO/CHAIN/FILE.crt

        <Location "/connection/">
            # Required for websockets
            RewriteEngine on
            RewriteCond %{HTTP:Upgrade} =websocket [NC]
            RewriteCond %{HTTP:Connection} upgrade [NC]
            RewriteRule /connection/(.*) http://127.0.0.1:8000/connection/$1 [P,L]
        </Location>

        <Location "/">
            ProxyPass         http://127.0.0.1:8000/
            ProxyPassReverse  http://127.0.0.1:8000/
        </Location>

        ErrorLog ${APACHE_LOG_DIR}/PATH/SERVER_LOG/FILE.log
        CustomLog ${APACHE_LOG_DIR}/PATH/ACCESS_LOG/FILE.log combined

        #### This part I'm not sure how to translate it
        ErrorDocument 500 "Server Error 500"
        ErrorDocument 502 "Server Error 502"
        ErrorDocument 503 "Server Error 503"
        ErrorDocument 504 "Server Error 504"

    </VirtualHost>
</IfModule>

the server has apache2.4 and ubuntu18, the centrifugo config is

{
  "secret": "SECRET",
  "admin_password": "PASSWORD",
  "admin_secret": "ADMIN-SECRET",
  "api_key": "API-KEY",
  "engine": "memory",
  "admin": true,
  "debug": true,
  "log_level": "debug"
}

current behavior

  • the url it's redirected to https succesfully, other projects works good with the ssl config
  • all directories path are checked and correct
  • but it says 404 page not found
  • when I try on the browser centrifugo.MY-HOST.com does show this 404 error
  • when I try with websocat library (from outside the server) websocat ws://centrifugo.MY-HOST.com/connection/websocket it says WebSocketError: Received unexpected status code. Error running
  • when I try with websocat library (from INSIDE the server, i mean connected by ssh) websocat ws://localhost:8000/connection/websocket it hangs... (waiting for messages I believe)
  • the centrifugo server it's up and listening port 8000, checked with netstat and supervisor says running
  • I changed 127.0.0.1 to localhost in the centrifugo config and the virtual host, added documentRoot to the path of the apache project and nothing...

what i'm doing wrong?

Luis Tena
  • 21
  • 4

1 Answers1

1

Never mind, it was my mistake in supervisor configuration. I had this:

[program:centrifugo]
command=sudo /var/www/centrifugo-server/centrifugo
autostart=true
autorestart=true
stderr_logfile=/var/log/centrifugo.error.log
stdout_logfile=/var/log/centrifugo.output.log

I placed the config file with full path to it and remove the sudo, and it works like a charm

command=/var/www/centrifugo-server/centrifugo --config=/var/www/centrifugo/config.json

I leave it here in case this could help anyone

Anyway if someone knows how to translate the balancer configuration on the virtual host, that part it's still missing, thanks

Luis Tena
  • 21
  • 4