Score:0

Mercure 0.14 configuration behind Nginx reverse proxy with supervisor - server not responding

ki flag

I need help configuring Mercure 0.14 to run on port 3000 on a production server, which nginx will proxy to behind the path /mercure/.

To install Mercure, I did the following:

  1. Grabbed Mercure 0.14 linux x86_64 binary from the release page on github. https://github.com/dunglas/mercure/releases
  2. Unpacked the tarball and moved the mercure binary to /usr/bin/mercure

I set up supervisor with the following configuration (with sensitive info redacted):

    # file: /etc/supervisor/conf.d/mercure.conf
    [program:mercure]
    command=/usr/bin/mercure run
    process_name=%(program_name)s_%(process_num)s
    numprocs=1
    environment=HOME="/home/[redacted]",USER="[redacted]",JWT_KEY=[redacted],SUBSCRIPTIO\
NS="1",CORS_ALLOWED_ORIGINS="[redacted]",USE_FORWARDED_HEADERS="1",PUBLISH_ALLOWED_ORIGIN\
S="http://localhost:3000",directory=/tmp,SERVER_NAME=:3000
    autostart=true
    autorestart=true
    startsecs=5
    startretries=10
    user=[redacted]
    redirect_stderr=false
    stdout_capture_maxbytes=1MB
    stderr_capture_maxbytes=1MB
    stdout_logfile=/var/log/mercure.out.log
    stderr_logfile=/var/log/mercure.error.log

Note that I set SERVER_NAME=:3000 in order to run it on port 3000.

Supervisor was able to start the process and shows it as running.

$ sudo supervisorctl status
mercure:mercure_0                RUNNING   pid 1410254, uptime 0:09:30

However, I'm not able to curl the server...

$ curl localhost:3000/.well-known/mercure
curl: (7) Failed to connect to localhost port 3000: Connection refused

Finally, I have Nginx set up to proxy requests on port 80 to the mercure server on port 3000. This is my Nginx configuration:

    location /mercure/ {
        proxy_pass http://127.0.0.1:3000/;
        proxy_read_timeout 24h;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

However, going to (servername)/mercure/.well-known/mercure results in a 502.

Mercure's logs only show:

{"level":"info","ts":1675706204.7100313,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"info","ts":1675706204.7100613,"msg":"serving initial configuration"}

But there is no error message in the logs.

I think the Nginx part is correct, but for some reason the server is just not running/responding on port 3000. Can anyone help?

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.