사이트 축소판 그림

5579 단어 http2Caddy
이 글은 마이크로소프트 애드벤트 캘린더의 2017년 5일째 기사다.

개시하다


최근에는 안전성 소동 때문인지 https화된 사이트가 늘었다.또한 렛즈 엔서리프트의 등장으로 개인 홈페이지도 비교적 간단히 https화할 수 있게 되면서 점점 더 많아질 것으로 생각한다.
간단하긴 하지만 앱ache,nginx 등 Let's Encerypt를 설정하면 이런 작업도 힘들다.
그래서 캐디가 등장했다.

이른바 caddy


caddy는 Go 언어로 구현된 웹 서버로 그 특징은 다음과 같다.
  • Caddyfile을 통한 간단한 설정
  • 기본 HTTP/2
  • 자동 HTTPS 기본값(Let's Encerypt 경유)
  • 가상 호스트
  • 실험적인 QUIC 지원!
    잠깐만요.
  • 시작할 때 Let's Encerypt에서 인증서 관련 처리를 처리하여https화된 사이트를 간단하게 제작할 수 있습니다.

    설치하다.


    테스트 환경: Ubuntu 16.04

    Go 설치


    즉시 다운로드해서 사용해 보려고 하지만, 본가에서 제공된 Free의 2진법은 비상무적 이용이 금지되어 있기 때문에 원본 파일을 컴파일해서 사용해 보십시오.그리고 Go가 필요하니까 거기서부터.
    1.8 이상이 필요해 창고를 추가해 설치했다.
    $ sudo add-apt-repository ppa:longsleep/golang-backports
    $ sudo apt-get update
    $ sudo apt-get install golang-go
    
    .bashrc GOPATH를 적절하게 설정
    ~/.bashrc
    export GOPATH=$HOME/.go
    
    쓰면 바로 반영한다.
    $ . .bashrc
    

    caddy 설치


    https://github.com/mholt/caddy
    여기 Build 방법이라고 쓰여 있는데 거기에 맞춰 설치할게요.
    원본 가져오기 및 컴파일
    $ go get github.com/mholt/caddy/caddy
    $ go get github.com/caddyserver/builds
    $ cd $GOPATH/src/github.com/mholt/caddy/caddy
    $ go run build.go
    
    이렇게 하면 바이너리로 PATH를 통과하기에 적당한 곳으로 복사할 수 있다
    $ sudo cp caddy /usr/local/bin
    
    사용자가 실행하면 미리 설정 기능
    $ sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
    
    이렇게 캐디를 치면 서버가 시작되고 도메인이 있으면 지정하면 처음 시작할 때 Let's Encerypt가 https를 설정합니다
    $ caddy -host example.com
    Activating privacy features...
    Your sites will be served over HTTPS automatically using Let's Encrypt.
    By continuing, you agree to the Let's Encrypt Subscriber Agreement at:
      https://acme-v01.api.letsencrypt.org/terms
    Please enter your email address so you can recover your account if needed.
    You can leave it blank, but you'll lose the ability to recover your account.
    Email address: メールアドレス入力
     done.
    https://example.com
    http://example.com
    
    브라우저에서 인증서를 확인하면 이런 느낌입니다.

    정말 한꺼번에 https 사이트를 완성했습니다.
    그렇긴 하지만, 초기 디스플레이는 그렇고, 기본 설정은 Caddyfile 시작입니다.
    여기. 많은 샘플이 있는데 예를 들면 wordpress면 이런 느낌이에요.
    Caddyfile
    example.com
    
    root /path/to/wordpress/
    gzip
    fastcgi / 127.0.0.1:9000 php
    rewrite {
        if {path} not_match ^\/wp-admin
        to {path} {path}/ /index.php?{query}
    }
    
    $ caddy -conf Caddyfile -host example.com
    
    통신은 http/2이죠.

    여러분도 간단하게 https 사이트를 진행할 수 있는 캐디를 사용해 보시는 게 어떨까요!

    덧붙이다


    QUIC의 행동을 확인하려다 크롬에서 QUIC를 연결할 수 없어 포기했다.
    시작할 때 -quic을 추가하면 QUIC에 대응하는 up 80443 listen을 진행할 수 있습니다.
    udp6       0      0 :::443                  :::*                               
    udp6       0      0 :::80                   :::* 
    

    QUIC?


    참조wiki.
    대략적으로 말하면 HTTP/HTTPS 통신은 TCP 연결을 사용하고QUIC는 UDP를 바탕으로 개발한 웹 기반 프로토콜이다.
    TCP라면 3번 휴대폰으로 연결한 뒤 HTTP로 대화를 시작한다.
    예를 들어, A에서 B로 연결하려는 경우
    A:"갑자기 죄송한데 B씨와 연결하고 싶은데 이 선물을 받아도 될까요?"
    B:"선물을 받았어요. 저희의 답례를 받을 수 있을까요?"
    A:감사합니다. 답례를 받았습니다.
    지저분하지만 이런 느낌으로 연결됐다.
    HTTPS라면 TLS의 협상이 필요하고 더 많은 라운드 트리거가 발생할 것이다.대화를 시작하기까지 시간이 많이 걸렸어요.대화를 인프라 아저씨 냄새처럼 표현한 점 양해 부탁드립니다.
    그리고 그 지연은 웹의 표시와 다운로드 속도에 영향을 줄 수 있다.
    QUIC는 UDP에서 이 TCP+TLS를 실현하여 세 번의 악수 없이 데이터를 얻을 수 있다.
    그러면 실제 사용하는 브라우저는cherome에 대응하고 서버는 구글에 대응합니다.Google이 개발하는 것은 당연한 일입니다.
    cherome의 검증을 통해 Protocol을 확인할 수 있습니다

    chrome://net-internals/#quic켜면 QUIC 사용 여부를 확인할 수 있습니다.

    그리고 지금 QUIC를 사용할 수 있는 서버는 캐디밖에 없는 것 같아서 시도해 봤어요.
    행동을 잘 확인할 수 있다면 다음 Advent Calendar에서 확인하십시오.

    좋은 웹페이지 즐겨찾기