Files
proxmox/rpc-translator-138/NGINX_ROUTING_VERIFICATION.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

4.8 KiB

Nginx Routing Verification - RPC Translator Service

Date: 2026-01-05
VMID: 2400
Domain: rpc.public-0138.defi-oracle.io


Verification Results

Nginx Configuration

File: /etc/nginx/sites-available/rpc-thirdweb

Proxy Configuration:

  • HTTP requests → http://127.0.0.1:9545 (RPC Translator)
  • WebSocket requests → http://127.0.0.1:9546 (RPC Translator WebSocket)

Status: CORRECTLY CONFIGURED


Service Status

Service Port Status Notes
Nginx 80, 443 Running Listening on both HTTP and HTTPS
RPC Translator 9545, 9546 Running HTTP and WebSocket ports active
Besu RPC 8545, 8546 Running Backend blockchain node

Routing Tests

Test 1: Direct Translator Access

curl http://127.0.0.1:9545 -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

Result: Returns {"jsonrpc":"2.0","result":"0x8a","id":1}

Test 2: Via Nginx (Port 80)

curl http://127.0.0.1:80 -X POST \
  -H 'Content-Type: application/json' \
  -H 'Host: rpc.public-0138.defi-oracle.io' \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

Result: Routes correctly to translator

Test 3: eth_sendTransaction Interception

curl http://127.0.0.1:9545 -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[...],"id":1}'

Result: Intercepted by translator (not rejected like Besu)

Test 4: Via Nginx - eth_sendTransaction

curl http://127.0.0.1:80 -X POST \
  -H 'Content-Type: application/json' \
  -H 'Host: rpc.public-0138.defi-oracle.io' \
  -d '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[...],"id":1}'

Result: Routes to translator and intercepts correctly


Translator Service Logs

When requests come through Nginx, the translator service logs show:

  • POST / requests received
  • Success: eth_chainId for standard RPC calls
  • Error: Server error for invalid eth_sendTransaction (expected - validation working)

Nginx Access Logs

Nginx logs show:

  • Requests to rpc.public-0138.defi-oracle.io are being processed
  • Proxy pass is routing to translator service
  • No connection errors to backend

Architecture Verification

Internet Request
  ↓
Cloudflare Tunnel (if configured)
  ↓
Nginx (port 80/443) ✅ CONFIGURED
  ↓
RPC Translator (port 9545) ✅ RUNNING
  ↓
Besu RPC (port 8545) ✅ RUNNING

Status: All components verified and routing correctly


Comparison: Direct Besu vs Translator

Direct Besu (port 8545)

curl http://127.0.0.1:8545 -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[...],"id":1}'

Result: {"error":{"code":-32604,"message":"The method eth_sendTransaction is not supported..."}}

Via Translator (port 9545)

curl http://127.0.0.1:9545 -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[...],"id":1}'

Result: Intercepted and processed (returns validation error for invalid address, not method rejection)

Via Nginx → Translator

curl http://127.0.0.1:80 -X POST \
  -H 'Host: rpc.public-0138.defi-oracle.io' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[...],"id":1}'

Result: Routes correctly to translator


Issue Found and Fixed

⚠️ Problem Identified

Port 80 server block was configured to return 204 No Content instead of proxying to the translator service. This was preventing requests from reaching the translator.

Fix Applied

Updated the port 80 server block to proxy to the translator service (port 9545) instead of returning 204. Both port 80 (HTTP) and port 443 (HTTPS) now correctly route to the translator.

Conclusion

Nginx is now correctly routing to the translator service

  • Port 80 (HTTP) server block updated to proxy to translator
  • Port 443 (HTTPS) server block already configured correctly
  • Nginx configuration points to http://127.0.0.1:9545 (translator)
  • Translator service is running and responding
  • Requests through Nginx (port 80) now reach the translator
  • eth_sendTransaction is being intercepted correctly
  • Public endpoint now routes through translator

Next Steps

  1. Nginx Routing: Verified and working
  2. ⚠️ Cloudflare Tunnel: May need to be updated to route through Nginx
  3. Translator Service: Running and intercepting correctly
  4. Besu Backend: Running and accessible

All local routing is verified and working correctly.