your programing

Go 용 웹 서버 앞에서 Nginx를 사용하면 어떤 이점이 있습니까?

lovepro 2020. 10. 16. 07:52
반응형

Go 용 웹 서버 앞에서 Nginx를 사용하면 어떤 이점이 있습니까?


사용자가 많은 JSON 데이터를 반환하는 웹 서비스를 작성 중입니다.

go http 서버를 사용하는 것과 비교하여 내 서버에서 Nginx를 사용하면 어떤 이점이 있습니까?


때에 따라 다르지.

기본적으로 nginx를 역방향 프록시로 사용하면 다음과 같은 이점이 있습니다.

  • 액세스 로그
  • 오류 로그
  • 간편한 SSL 종료
  • SPDY 지원
  • gzip 지원
  • 몇 줄의 특정 경로에 대한 HTTP 헤더를 설정하는 쉬운 방법
  • 매우 빠른 정적 자산 제공 (S3 / 등을 제공하는 경우에는 관련성이 없음)

이동 HTTP 서버는 아주 좋은,하지만 당신은 것입니다 이러한 몇 가지 작업을 수행 할 바퀴를 재발견 할 필요가 (미세이다 : 모든 사람에게 모든 것이 될 운명이 아니에요).

저는 항상 nginx를 앞에두고 "웹 서버"작업을 수행하는 것이 더 쉽다는 것을 알았습니다. 내 Go 응용 프로그램은 응용 프로그램 작업을 수행하며 최소한의 헤더 등 만 수행합니다. 필요합니다. nginx를 "나쁜"것으로 보지 마십시오.


Go의 표준 http 서버는 괜찮습니다. 응용 프로그램이 대부분 / 단지 "동적"요청 / 응답 인 경우 실제로 가장 좋은 방법입니다.

nginx를 사용하여 정적 자산을 제공 할 수 있지만 대부분의 경우 표준 Go가 적합합니다. 더 높은 성능이 필요한 경우 Varnish로 가능한 한 많이 CDN 또는 캐시를 사용해야합니다 (예 :).

동일한 IP 주소에서 서로 다른 애플리케이션을 제공해야하는 경우 nginx는 프록시가 서로 다른 애플리케이션간에 요청을 분산하는 데 적합한 선택입니다. 나는 그런 종류의 도구 상자에서 Varnish 또는 HAProxy를 더 자주 얻습니다.


고릴라 웹 툴킷 을 제공합니다 :

  • 고급 라우팅 (도메인 / 하위 도메인 제한, 정규식 경로 일치).
  • gzip 지원 ( 미들웨어 핸들러 를 통해 )
  • Apache Common Log Format으로 출력되는 로깅 미들웨어 핸들러입니다.
  • 암호화 된 쿠키를 보호합니다.
  • 세션.
  • schema package는 양식 값을 구조체로 변환합니다.

이것은 Go net/http와 NGINX와 같은 HTTP 서버 사이의 많은 차이를 메 웁니다 .

개인적 net/http으로 CDN을 대신 연결할 수 있다는 것을 알고 있다면 다른 HTTP 서버를 설치하고 구성하는 것을 피하고 싶습니다 .

나는 net/http모든 표준 라이브러리에서 가장 강력한 HTTP 서버를 가지고 있다고 생각 합니다.


https://blog.gopheracademy.com/caddy-a-look-inside/ 에서 Go가 미들웨어를 사용하여 gzip, 오류, 정적 파일, 라우팅 및 http 헤더를 처리 할 수있는 것처럼 보입니다. 블로그의 아래 줄은 이러한 요청을 처리하는 방법을 보여줍니다.

logHandler(gzipHandler(fileServer))

그들은 정말 흥미로운 방식으로 오류 로깅을 처리합니다. 미들웨어가 오류 코드 (int)를 반환하는 한 오류 처리 미들웨어가이를 자동으로 처리합니다. 그들은 Nginx처럼 Go에서 전체 사이트를 구성하는 데까지 갔다. "모든 Gopher Academy 웹 사이트에 대한 nginx.conf 파일의 길이는 115 줄이 넘었습니다. 동등한 Caddyfile은 50 줄에 불과합니다."

참고 URL : https://stackoverflow.com/questions/17776584/what-are-the-benefits-of-using-nginx-in-front-of-a-webserver-for-go

반응형