Express gateway return redirect 307 instead of forward requests

231 Views Asked by At

Scenario

I have two services service1 and service2. First is written in net5 and second in net6. I also would like to have some gateway. I used express gateway. I hosted it as 3 containers with docker compose. There are 3 ports localhost:10443 for service1 localhost:10445 for service2 and localhost:10444 for gateway. But I want all traffic thru gateway.

Expected bahaviour

When I enter in my browser address localhost:10444/app/path1 I should receive response from service2. In browser I should see port 10444.

Problem

Unfortunately gateway redirects my reuqest instead of forwarding it. It return http 307 and Location header like https://container2:10445/...

I have following express gateway config:

http:
  port: 8080
https:
  port: 9443
  tls:
    "default":
      key: /var/lib/eg/certs/xyz.key
      cert: /var/lib/eg/certs/xyz.crt
admin:
  port: 9876
  host: localhost
apiEndpoints:
  service1:
    paths:
      - '/app/path1/*'
      - '/external/*'
  service2:
    paths: 
      - '/'
      - ''
      - '/static/*'
      - '/products/*'

serviceEndpoints:
  service1end:
    url: 'http://container1'
  service2end:
    url: 'http://container2'
policies:
  - basic-auth
  - cors
  - expression
  - key-auth
  - log
  - oauth2
  - proxy
  - rate-limit
pipelines:
  pipeline1:
    apiEndpoints:
      - service1
    policies:
      - proxy:
          - action:
              serviceEndpoint: service1end
              
  pipeline2:
    apiEndpoints:
      - service2
    policies:
      - proxy:
          - action:
              serviceEndpoint: service2end 

docker compose

version: '3.4'

services:
  gw:
    image: express-gateway:latest
    container_name: gw
    depends_on:
      - service1
      - service2

  mssql:...
  redis:...
  storage: ...

  service1:
    image: ${DOCKER_REGISTRY-}service1
    container_name: service1
    build:
      context: .
      dockerfile: somepath/Dockerfile
    depends_on:
      - mssql
      - redis
      - storage

  service2:
    image: ${DOCKER_REGISTRY-}service2
    container_name: service2
    build:
      context: .
      dockerfile: some path 2/Dockerfile
    depends_on:
      - mssql

docker compose override

version: '3.4'

services:
  gw:
    ports:
      - 10081:8080
      - 10444:9443
    volumes:
      - C:somepath:/var/lib/eg

  mssql:
  redis:
  storage:
  
  service1:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ConnectionStrings__Conn=XXXX
    ports:
      - "10083:80"
      - "10446:443"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

  service2:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ConnectionStrings__PADb=XXXX      - 
    ports:
      - "10082:80"
      - "10445:443"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

volumes:
  sqldbVolume:
    external: false
  redisVolume:
    external: false

0

There are 0 best solutions below