> 백엔드 개발 > Golang > gondola: 가볍고 간단한 YAML 기반 역방향 프록시를 사용하면 어떨까요?

gondola: 가볍고 간단한 YAML 기반 역방향 프록시를 사용하면 어떨까요?

王林
풀어 주다: 2024-08-12 06:08:07
원래의
1093명이 탐색했습니다.

gondola: Why not use a lightweight and simple YAML-based reverse proxy?

곤돌라란 무엇인가요?

gondola는 Go에서 만든 역방향 프록시로 YAML로 구성 파일을 작성하기만 하면 쉽게 사용할 수 있습니다.

Awesome-go에서 만나보실 수 있습니다.

Go의 표준 라이브러리만을 사용하여 구현되었으며 다음과 같은 기능을 가지고 있습니다

  • 가상 호스트
    • 업스트림 서버에 여러 호스트를 설정할 수 있습니다.
  • 구성 파일 로더
    • YAML 형식의 구성 파일을 사용할 수 있습니다.
  • TLS
    • TLS 인증서를 준비하시면 TLS를 이용하실 수 있습니다.
  • 정적 파일 제공
    • 정적 파일을 제공할 수 있습니다.
  • 접속 로그
    • 프록시 접속 로그와 업스트림 서버 접속 로그를 출력합니다.
  • 바이너리 배포
    • 크로스 컴파일된 바이너리를 배포합니다.

동기 부여

저는 Go로 직접 만든 bmf-tech.com이라는 블로그를 운영하고 있습니다.

Nginx를 사용하여 역방향 프록시를 구축한 블로그입니다.

제 블로그 시스템의 아키텍처는 복잡하지 않고, 보다 간단한 구성으로 운영할 수 있는 리버스 프록시면 충분하다고 생각했습니다.

그래서 저는 Nginx와 같은 유연한 구문을 사용하는 구성 파일 대신 간단한 구성 파일로 구성할 수 있는 나만의 역방향 프록시를 구축하기로 결정했습니다.

실제로 제가 운영하는 블로그 시스템에서 곤돌라를 사용하고 있는데 현재까지는 간단하고 쉽게 운영되고 있습니다.

곤돌라 이용방법

go get 명령을 사용하거나 바이너리를 다운로드하여 곤돌라를 사용할 수 있습니다.

go get -u github.com/bmf-san/gondola
로그인 후 복사

바이너리는 릴리스부터 사용할 수 있습니다.

Docker 이미지는 bmf-san/gondola에서도 보실 수 있습니다.

구성 파일에 프록시 서버(곤돌라)와 업스트림 서버가 구성되면 곤돌라를 시작하면 됩니다.

# example config.yaml
proxy: (default)
  port: 443
  read_header_timeout: 2000
  shutdown_timeout: 3000
  tls_cert_path: certificates/cert.pem
  tls_key_path: certificates/key.pem
  static_files: /public/static_files
    - path: /public/
      dir: . /public
upstreams: host_name: backend1.local
  - host_name: backend1.local
    target: http://backend1:8081 # backend1 is the name of the container
  - host_name: backend2.local
    target: http://backend2:8082 # backend2 is the name of the container
log_level: 0 # Debug:-4 Info:0 Warn:4 Error:8
로그인 후 복사

다음과 같이 곤돌라를 시작하세요.

gondola -config config.yaml
로그인 후 복사

원하는 경우 바로 시험해 볼 수 있는 _examples도 있습니다.

Go에서 역방향 프록시 구현

Go에서 역방향 프록시를 구현하려면 Golang에서 로드 밸런서 구현을 참조하세요.

본 글에서는 로드밸런서 구현 방법을 소개하고 있는데, 역방향 프록시 구현을 기반으로 하기 때문에 도움이 될 수 있습니다.

기부금

곤돌라에서는 문제와 끌어오기 요청을 환영합니다.

물론 스타님도 환영합니다.

곤돌라의 일부 기능과 구현이 아직 누락되어 있어 계속해서 개선해 나가고 싶습니다.

  • 정상적인 종료
  • 업스트림 서버 상태 점검
  • 구성 파일 다시 로드
  • 통신비 최적화
  • 로드 밸런싱
  • 확장성을 위한 기타 구현 조정

의견을 자유롭게 남겨주세요.

위 내용은 gondola: 가볍고 간단한 YAML 기반 역방향 프록시를 사용하면 어떨까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿