Frontend accessing backend - internal URL?

tony-hunter
HOBBY

a year ago

Hi folks

I have a seperate FE and BE service - two different projects.

The FE has an env var to locate the backend.

Should I set this to the internal URL of the BE service that railway exposes?

If so, should I prefix with http/https?

0 Replies

tony-hunter
HOBBY

a year ago

c18400df-5dee-4fe7-bc56-a98db8d475bd


a year ago

two different projects, or two different services?

please read this page so we can get our terminology correct before going forward -


tony-hunter
HOBBY

a year ago

two different services within the same project


a year ago

thank you


a year ago

is this a CSR frontend?


tony-hunter
HOBBY

a year ago

NextJS frontend, blend of SSR/CSR


tony-hunter
HOBBY

a year ago

some of my build steps hit the backend, when I've changed to the internal URL (with https:// prefix) I get this:


tony-hunter
HOBBY

a year ago

```#12 22.31 TypeError: fetch failed

12 22.31 at node:internal/deps/undici/undici:12502:13

12 22.31 at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

12 22.31 at async a (/app/.next/server/…/page.js:1:11099)

12 22.31 at async u (/app/.next/server/…/page.js:1:10740) {

12 22.31 digest: '4154157414',

12 22.31 [cause]: Error: getaddrinfo ENOTFOUND

12 22.31 at GetAddrInfoReqWrap.onlookupall as oncomplete

12 22.31 at GetAddrInfoReqWrap.callbackTrampoline (node:internal/async_hooks:130:17) {

12 22.31 errno: -3008,

12 22.31 code: 'ENOTFOUND',

12 22.31 syscall: 'getaddrinfo',

12 22.31 hostname: '.railway.internal'

12 22.31 }```


a year ago

the private network is not available during build time.

the internal domains may use domains instead of IP addresses, but they need to be treated like a local IP, meaning you use http and a port in the URL.

if your frontend calls the backend via SSR during runtime use the private network.

if a client's browser calls the backend, use the public url.


tony-hunter
HOBBY

a year ago

Are the IPs static on a hobby plan?


a year ago

that is a pro only feature, and it doesnt have anything to do with private networking.


tony-hunter
HOBBY

a year ago

all makes sense, thanks Brody


a year ago

let me know if you have any more questions


tony-hunter
HOBBY

a year ago

sorry, one more, when addressing the internal url in SSR, do I use http or https prefix?


a year ago

http


a year ago

treat it like your local network, but instead of a ip, it uses a domain


tony-hunter
HOBBY

a year ago

thanks man. Is that something that's obvious to everyone but me, or should it be in docs? (Or, is it already?)


a year ago

its not obvious to everyone, i can for sure see the logic in thinking you would use https with a domain name, but it is in the docs! -


tony-hunter
HOBBY

a year ago

thanks again - should have read the manual


a year ago

its not always a first thought to dig into the docs, no worries!


tony-hunter
HOBBY

a year ago

ok - have been trying this, on an API call that is definitely SSR

I'm calling :8080/ from my frontend. My backend (python) has the internal url in ALLOWED_HOSTS


tony-hunter
HOBBY

a year ago

I'm getting a ``` code: 'ECONNREFUSED',

syscall: 'connect',```

tony-hunter
HOBBY

a year ago

on the frontend


a year ago

please provide the actual url you are using


tony-hunter
HOBBY

a year ago

DM'd


a year ago

<#727685388893945877> #5


tony-hunter
HOBBY

a year ago

you need a way people can pass you variables they don't want exposed


tony-hunter
HOBBY

a year ago

would rather not post in public



a year ago

I assure you it's not sensitive in the slightest



a year ago

it wouldn't be a very private network otherwise haha


a year ago

does your backend listen on 8080?


tony-hunter
HOBBY

a year ago

yes


a year ago

gunicorn? unicorn?


tony-hunter
HOBBY

a year ago

verified with a print on launch of my backend - THE PORT IS 8080


tony-hunter
HOBBY

a year ago

gunicorn - started with web: python [manage.py](manage.py) migrate &amp;&amp; gunicorn .asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:$PORT


a year ago

remove the bind flag


a year ago

(and it's accompanying host:port)


tony-hunter
HOBBY

a year ago

doing so


tony-hunter
HOBBY

a year ago

no joy


a year ago

show me your new start command please


tony-hunter
HOBBY

a year ago

web: python manage.py migrate && gunicorn shareapodcast_be.asgi:application -k uvicorn.workers.UvicornWorker


a year ago

what error are you getting now


tony-hunter
HOBBY

a year ago

Same as above


tony-hunter
HOBBY

a year ago

Connection refused


a year ago

very sorry, i was mistaken, your start command needs to be -

web: python manage.py migrate &amp;&amp; gunicorn .asgi:application -k uvicorn.workers.UvicornWorker --bind [::]:$PORT

tony-hunter
HOBBY

a year ago

works!


tony-hunter
HOBBY

a year ago

Next is now giving me warnings about mixed protocols being used (https vs http)


tony-hunter
HOBBY

a year ago

Which I’ll look at


a year ago

sounds good