DEV Community

loading...

Manage Multiple App URL in Local Development

Amree Zaid
Professional slacker
・1 min read

These days we might have multiple local applications that are running on different ports (e.g: http://localhost:3000, http://localhost:3001 and so on). This is pretty troublesome as we have to remember which application is running on which port.

haproxy can redirect a URL to a certain host with different port (this is impossible with hosts). Here's how we can do it in OS X:

Install haproxy

brew install haproxy

Create a new file at /usr/local/etc/haproxy.cfg and put these contents (customize as you wish):

global
  maxconn 4096
  daemon

defaults
  log global
  mode http

  timeout connect 5000ms
  timeout client  50000ms
  timeout server  50000ms

frontend web_gateway
  bind *:80

  # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#7.1
  acl is_web hdr_beg(host) myapp.local
  acl is_api hdr(host) -i api.myapp.local
  acl is_admin hdr(host) -i admin.myapp.local

  use_backend web if is_web
  use_backend api if is_api
  use_backend admin if is_admin

backend web
  # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#server
  server web 127.0.0.1:3000

backend api
  server api 127.0.0.1:3001

backend admin
  server admin 127.0.0.1:3002

Make sure you put the hosts declared before in /etc/hosts:

127.0.0.1  localhost
127.0.0.1  myapp.local.sg # We can use different domain here
127.0.0.1  myapp.local.hk
127.0.0.1  admin.myapp.local
127.0.0.1  api.myapp.local

Run this command to ensure haproxy will always be running

brew services start haproxy

Discussion (0)

Forem Open with the Forem app