FastHttpd - 대체 nginx

5414 단어

소개



nginx를 대체할 리버스 프록시를 찾고 있었는데 valyala/fasthttp을 찾았습니다.

jarxorg/tree 을 개발한 지 얼마 안 되어서 이 둘을 합치면 내 요구에 맞는 제품을 만들 수 있을 것 같아서 fasthttpd/fasthttpd 을 개발하기 시작했습니다.

특징


  • 정적 파일 제공
  • 단순 라우팅
  • 액세스 로깅
  • 리버스 프록시
  • 헤더 사용자 정의
  • TLS 지원
  • 가상 호스트
  • YAML 구성

  • 시작하기



    구성 파일을 지정합니다.

    fasthttpd -f path/to/config.yaml
    


    내장 구성 및 일부 사용자 정의를 사용하십시오.

    fasthttpd -e root=./public -e listen=:8080
    


    설치



    홈브류 사용.

    brew tap fasthttpd/fasthttpd
    brew install fasthttpd
    


    또한 바이너리, deb, rpm 및 도커 이미지를 사용할 수 있습니다.

    참조 https://github.com/fasthttpd/fasthttpd#installation

    대체 nginx 예시



    다음은 nginx.conf입니다.

    upstream backend {
        server 127.0.0.1:8000;
    }
    
    server {
        listen 80 default_server;
        return 302 https://$host$request_uri;
    }
    
    server {
        listen 443 default_server;
        ssl on;
        ssl_protocols      TLSv1 TLSv1.1 TLSv1.2;
        ssl_certificate  /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location ~ ^/(404|50.).html {
            root /usr/share/nginx/html;
            internal;
        }
        location ~ ^/(.*)\.(ico|css|git|jpg|jpeg|png|js)$ {
            alias /app/public/$1.$2;
        }
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_intercept_errors on;
            proxy_pass http://backend;
        }
    }
    


    다음은 fasthttpd의 구성입니다.

    host: example.com
    listen: ':80'
    
    routes:
      - path: ^/(.*)$
        match: regexp
        rewrite: https://example.com/$1
        status: 302
    ---
    host: example.com
    listen: ':443'
    root: /usr/share/fasthttpd/html
    ssl:
      autoCert: true
    
    errorPages:
      '404': /err/404.html
      '5xx': /err/5xx.html
    
    handlers:
      'backend':
        type: proxy
        url: http://localhost:8080/
      'public':
        type: fs
        root: /app/public
        indexNames: [index.html]
    
    routes:
      - path: ^/(.*)\.(ico|css|git|jpg|jpeg|png|js)$
        match: regexp
        handler: public
      - path: /
        handler: backend
    


    귀하의 의견을 기꺼이 받겠습니다. 감사합니다!

    좋은 웹페이지 즐겨찾기