项目作者: orijtech

项目描述 :
Setup a server frontend with HTTPS that then proxies to traffic to a backend/cluster
高级语言: Go
项目地址: git://github.com/orijtech/frontender.git
创建时间: 2017-06-05T07:10:52Z
项目社区:https://github.com/orijtech/frontender

开源协议:Apache License 2.0

下载


frontender

Setup a server frontend with HTTPS that then proxies to traffic to a backend/cluster.

This project is used inside orijtech to create for folks HTTPS servers that can then be
put in Docker images, or automatically uploaded to respective cloud storage systems
and passed into some container engine for a disk image.

Examples:

  • Preamble with imports:
    ```go
    package frontender_test

import (
“io”
“log”
“os”

  1. "github.com/orijtech/frontender"

)

  1. * Plain listen as a server:
  2. ```go
  3. func listen() {
  4. lc, err := frontender.Listen(&frontender.Request{
  5. Domains: []string{
  6. "git.orijtech.com",
  7. "repo.orijtech.com",
  8. },
  9. NonHTTPSRedirectURL: "https://git.orijtech.com",
  10. ProxyAddress: "http://localhost:9845",
  11. NoAutoWWW: true,
  12. })
  13. if err != nil {
  14. log.Fatal(err)
  15. }
  16. defer lc.Close()
  17. if err := lc.Wait(); err != nil {
  18. log.Fatal(err)
  19. }
  20. }
  • Generate the binary of the server for a platform

    1. func generateBinary() {
    2. rc, err := frontender.GenerateBinary(&frontender.DeployInfo{
    3. FrontendConfig: &frontender.Request{
    4. Domains: []string{
    5. "www.medisa.orijtech.com",
    6. "medisa.orijtech.com",
    7. "m.orijtech.com",
    8. },
    9. ProxyAddress: "http://192.168.1.105:9855",
    10. },
    11. TargetGOOS: "linux",
    12. Environ: []string{"CGO_ENABLED=0"},
    13. })
    14. if err != nil {
    15. log.Fatal(err)
    16. }
    17. defer rc.Close()
    18. f, err := os.Create("theBinary")
    19. if err != nil {
    20. log.Fatal(err)
    21. }
    22. defer f.Close()
    23. io.Copy(f, rc)
    24. }
  • Generate a Docker image for the server

    1. func generateDockerImage() {
    2. imageName, err := frontender.GenerateDockerImage(&frontender.DeployInfo{
    3. CanonicalImageNamePrefix: "frontender",
    4. FrontendConfig: &frontender.Request{
    5. Domains: []string{
    6. "git.orijtech.com",
    7. "repo.orijtech.com",
    8. },
    9. NonHTTPSRedirectURL: "https://git.orijtech.com",
    10. ProxyAddress: "http://localhost:9845",
    11. NoAutoWWW: true,
    12. },
    13. ImageName: "odex-auto",
    14. })
    15. if err != nil {
    16. log.Fatal(err)
    17. }
    18. log.Printf("ImageName: %q\n", imageName)
    19. }