🚨 CRITICAL: Production service completely unreachable
edriss19000
HOBBYOP

17 days ago

My service is failing with "Application failed to respond" on the Railway public URL, including /healthz.

Service: Rizin-Your-Pesonal-Life-Coach

Deployment ID: 6ac93b12-afd6-4921-9db1-7c4f8c03091b

Public networking target: Port 8080

App logs confirm the server is running and bound correctly:

[express] serving on 0.0.0.0:8080

I added a top-level request logger before all middleware:

[REQ] METHOD PATH

When I request:

https://rizin-your-pesonal-life-coach-production.up.railway.app/healthz

the browser shows "Application failed to respond", but there is no:

[REQ] GET /healthz

So Railway's public proxy is not reaching the container even though the app is listening on 0.0.0.0:8080. Please investigate the proxy/service routing for this deployment.

  1. Railway support the Request ID:
Wh5cZBxoSGGd6t9qn6XIxQ

The app logs show it is listening on 0.0.0.0:8080, and Railway public networking targets port 8080. I added a top-level request logger before all middleware, but when I hit /healthz on the Railway-generated domain, no [REQ] GET /healthz log appears. The request fails with “Application failed to respond.” Request ID: Wh5cZBxoSGGd6t9qn6XIxQ. Please investigate public proxy routing to this container.
Solved$10 Bounty

4 Replies

Status changed to Open Railway 17 days ago


edriss19000
HOBBYOP

17 days ago

Service: Rizin-Your-Pesonal-Life-Coach
Deployment ID: 1c189617-ee87-4e96-b4b6-3f3ffa4f4d64

The app IS receiving requests (logs show [REQ] GET /healthz), 
but the proxy is not returning the response to the client.

Browser shows: "Application failed to respond"
App logs show: [REQ] GET /healthz (request received)
No errors in app logs.

This is a Railway proxy/response routing issue, not an app issue.

Something I'd try is make the application listen to an arbitrary port (eg, 3000), and map the URL to that port as well. See if that does anything.


0x5b62656e5d

Something I'd try is make the application listen to an arbitrary port (eg, 3000), and map the URL to that port as well. See if that does anything.

edriss19000
HOBBYOP

17 days ago

Tried the arbitrary port test and it still fails.

I changed the app to listen on PORT=3000, updated Railway public networking to target port 3000, redeployed, and the public Railway URL still returns:

Application failed to respond

Latest Request ID: IXabsbgjRlm_LS6qn6XIxQ

The app logs show it starts and binds correctly, but public requests still do not reach the app request logger. So this does not appear to be a stuck 8080 route. It looks like Railway’s public proxy/domain routing is not forwarding traffic to the container at all.

Current evidence:

* App binds to 0.0.0.0

* PORT matches the Railway target port

* Tried both 8080 and 3000

* /healthz is registered before all middleware

* No [REQ] GET /healthz appears when hitting the public URL

* Public URL still returns Railway “Application failed to respond”

Do you think this could be workspace/service routing or account-level activation on Railway? I’m on the Hobby plan, but maybe something is still inactive or the public domain attachment is broken.


adaptive-ap
PRO

17 days ago

Best Guess Answer

  • Your logger middleware or /healthz handler accepts the request but never sends a response.
  • Most likely missing next(), or defined as (req, res) instead of (req, res, next).
  • Fix: app.use((req, res, next) => { console.log(\[REQ] ${req.method} ${req.path); next(); });
  • Confirm /healthz ends with res.send('ok') or res.sendStatus(200).

Reason

  • Your second message showed [REQ] GET /healthz in logs while the browser still failed.
  • That means the proxy reached the container — the app just never wrote a response.
  • Proxy timed out and returned its fallback page. App-side hang, not routing.

Process of elimination

  • Port binding: ruled out — logs confirm 0.0.0.0, and 8080 → 3000 swap didn't help.
  • Proxy routing: ruled out by your own log showing the request reaching the app.
  • Account/plan: ruled out — Hobby serves public traffic fine.
  • Confirm: curl -v https://<your-domain>/healthz — if it hangs ~30–60s with x-railway-fallback: true header, diagnosis confirmed.

Status changed to Solved edriss19000 17 days ago


Welcome!

Sign in to your Railway account to join the conversation.

Loading...