Can't find root of 502 errors on external calls
jvkuhleword
HOBBYOP

7 months ago

# Railway Support Ticket: Service Unable to Route External Traffic (502 Errors)

## Service Information

- Service ID: ce0adaf5-7ed7-4032-b2f4-202d7a9928c1

- Project: n8n-workflow-explorer

- Environment: production

- Domain: n8nworkflowexplorer-production.up.railway.app

- Issue: External traffic routing failure with 502 "Application failed to respond" errors

## Problem Summary

Our Node.js/Express application successfully starts, passes health checks, and receives internal Railway health check requests, but all external traffic results in 502 errors. The critical indicator is the X-Railway-Fallback: true header in responses, suggesting Railway's edge proxy is falling back to error responses instead of routing to our application container.

## What's Working white_check_mark emoji

- Application builds and starts successfully

- Database connectivity works

- Internal Railway health checks pass (`/ping` endpoint)

- Railway automatically provides PORT=8080

- Application binds correctly to 0.0.0.0:8080

- SSL/TLS certificate is valid (Let's Encrypt)

- DNS resolution works correctly

- Railway edge network receives requests (confirmed by Railway headers)

## What's Failing x emoji

- All external HTTP/HTTPS requests return 502 errors

- No external requests appear in application logs (traffic never reaches container)

- Internal connectivity fails (`railway run curl localhost:8080` fails)

- Railway edge responds with fallback error (`X-Railway-Fallback: true` header)

## Technical Evidence

### 1. Railway Headers Confirm Edge Connectivity

```bash

$ curl -I https://n8nworkflowexplorer-production.up.railway.app

HTTP/2 502

server: railway-edge

x-railway-edge: railway/us-east4-eqdc4a

x-railway-fallback: true # ← CRITICAL: Indicates fallback to error response

x-railway-request-id: MpAq6OufSfa-_S0Rg4a9AQ

```

### 2. Application Logs Show Internal Health Checks Working

```

globe_with_meridians emoji Incoming request: {

method: 'GET',

url: '/ping',

headers: {

host: 'healthcheck.railway.app',

'user-agent': 'RailwayHealthCheck/1.0'

}

}

```

### 3. No External Request Logs Despite Comprehensive Logging

Our application has detailed request logging middleware, but zero external requests appear in logs, confirming traffic never reaches the container.

### 4. Port and Environment Configuration

```

wrench emoji PORT environment variable: 8080

wrench emoji Using port: 8080

white_check_mark emoji Server running on port 8080

globe_with_meridians emoji App listening on port: 8080

```

### 5. SSL Certificate Verification

```bash

$ echo | openssl s_client -connect n8nworkflowexplorer-production.up.railway.app:443 -servername n8nworkflowexplorer-production.up.railway.app 2>/dev/null | openssl x509 -noout -dates

notBefore=Jun 4 14:01:45 2025 GMT

notAfter=Sep 2 14:01:44 2025 GMT

```

## Troubleshooting Steps Completed

### Configuration Fixes Attempted:

1. white_check_mark emoji Implemented Railway's recommended Express binding pattern

2. white_check_mark emoji Tested both 0.0.0.0 and :: host binding

3. white_check_mark emoji Verified PORT environment variable usage

4. white_check_mark emoji Added railway.json configuration file

5. white_check_mark emoji Tested with minimal test server (same issue)

6. white_check_mark emoji Implemented comprehensive request logging

7. white_check_mark emoji Verified all Railway environment variables

### Infrastructure Diagnostics Completed:

1. white_check_mark emoji SSL/TLS certificate validation

2. white_check_mark emoji DNS resolution verification

3. white_check_mark emoji HTTP/1.1 and HTTP/2 protocol testing

4. white_check_mark emoji Railway edge network connectivity confirmation

5. white_check_mark emoji Internal container connectivity testing

6. white_check_mark emoji Domain configuration verification

## Configuration Files

### railway.json

```json

{

"$schema": "https://railway.com/railway.schema.json",

"deploy": {

"healthcheckPath": "/health",

"healthcheckTimeout": 100,

"startCommand": "npm run test-server"

}

}

```

### Express Server Configuration

```javascript

const port = parseInt(process.env.PORT || '3000', 10);

app.listen(port, "0.0.0.0", function () {

console.log(`white_check_mark emoji Server running on port ${port}`);

});

```

## Hypothesis

Based on the X-Railway-Fallback: true header and the fact that internal health checks work while external traffic fails, this appears to be a Railway load balancer/edge proxy configuration issue specific to our service. The edge proxy can reach our container for health checks but cannot properly route external traffic.

## Request

Please investigate the internal routing configuration for our service. The issue appears to be between Railway's edge proxy and our application container, not with our application configuration or external infrastructure.

## Urgency

This is blocking our production deployment. We have a fully functional application that works locally and passes all Railway health checks, but cannot serve external traffic due to this routing issue.

---

Additional Information Available:

- Complete application logs

- Detailed network diagnostic results

- Railway environment variable dumps

- Build and deployment logs

Thank you for your assistance in resolving this infrastructure issue.

$10 Bounty

2 Replies

Railway
BOT

7 months ago

Hey there! We've found the following might help you get unblocked faster:

If you find the answer from one of these, please let us know by solving the thread!


7 months ago

This thread has been marked as public for community involvement, as it does not contain any sensitive or personal information. Any further activity in this thread will be visible to everyone.

Status changed to Open brody 7 months ago


clashing
HOBBY

7 months ago

Can you please provide the railway.json file, & the screenshots for the settings UI of the deployed service (specially the networking thing)?


Loading...