Fluid server

FLUID server

Reverse Proxy란 클라이언트와 서버 간의 중개자 역할을 하는 서버로, 클라이언트로부터의 요청을 대신 받아 서버에 전달하고, 서버의 응답을 클라이언트에 전달하는 역할을 한다. 이를 통해 서버의 부하를 분산시키고 보안을 강화하는 등 다양한 기능을 수행할 수 있다.

  • Reverse proxy
  • Static contents 지원
  • Auto Cert(인증서 무중단 자동 갱신) 지원
  • TCP socket reverse proxy 지원

Command line

fluid serve --config <path>
플래그단축 플래그필수설명
--config <file>-c <file>O
--verbose-v다양한 log 정보 제공
--my-id <id>server id, (default: 0, generate random number)
--dry-run설정 파일의 오류를 확인

활용 예

config yaml file을 이용하여 다양하게 활용할 수 있다.

Auto Cert

HttpServer:
- Name: http_server
  Listen: 0.0.0.0:auto-cert

AutoCert:
  Email: admin@example.com
  StoreDir: /data/fluid/autocert
  Blacklist:
  - stress.com

domain에 따라 다른 서버로 연결

HttpRouter:
- Host: [ db.example.com ]
  Route:
  - Proxy:
      Destination:
      - http://192.168.0.36:8684
- Host: [ demo.example.com ]
  Route:
  - Proxy:
      Destination:
      - http://192.168.0.85:8080

경로별로 다른 서버 접속

HttpRouter:
- Host: [ db.example.com ]              # single host matcher
  Route:
  - Path:
    - \~ /db/
    Proxy:
      Destination:
      - http://192.168.0.36:5654
  - Proxy:
      Destination:
      - http://192.168.0.85:8080

복수의 서버를 이용한 부하 분산

HttpRouter:
- Host: [ db.example.com ]
  Route:
  - Proxy:
      Destination:
      - http://192.168.0.35:8684
      - http://192.168.0.36:8684

Static contents 사용

HttpRouter:
- Host:
  - doc.example.com
  - endoc.example.com
  Route:
  - Static:
      RootDir: /data/fluid/htdocs
    Rewriter: |
      REWRITE( path("/") )

Access policy를 활용한 접근제어

HttpRouter:
- Host: [ demo.example.com ]
  Route:
  - Proxy:
      Destination:
      - http://192.168.0.85:8080
  AccessPolicy: allow-all

AccessPolicy:
- Name: allow-all
  Policy: NONE
- Name: allow-only-local
  Policy: ALLOW
  Allow:
  - \~ 127.0.
- Name: deny-only-local
  Policy: DENY
  Deny:
  - \g 127.0.0.*            # glob match

TCP reverse proxy

TcpServer:
- Name: tcp_5210
  Listen: 0.0.0.0:5210
  Destination: [ 192.168.0.110:22 ]
  AccessPolicy: allow-all
- Name: tcp_5213
  Listen: 0.0.0.0:5213
  Destination: [ 192.168.0.113:22 ]
  AccessPolicy: allow-all