Функция http.ListenAndServeTLS

Функция http.ListenAndServeTLS запускает HTTPS сервер, который принимает входящие соединения на указанном адресе и порту, используя протокол TLS для шифрования трафика. В первый параметр мы передаем адрес для прослушивания, во второй параметр мы передаем путь к файлу сертификата, в третий параметр мы передаем путь к файлу приватного ключа, в четвертый параметр мы передаем обработчик запросов.

Синтаксис

goerr := http.ListenAndServeTLS(addr, certFile, keyFile, handler)

Пример

Давайте запустим простой HTTPS сервер, который будет возвращать приветственное сообщение на все запросы:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, HTTPS!")
  })

  err := http.ListenAndServeTLS(":443", "server.crt", "server.key", nil)
  if err != nil {
    fmt.Println("Server error:", err)
  }
}

Результат выполнения кода:

go"Server running on https://localhost:443"

Пример

Давайте создадим сервер с кастомным обработчиком и собственным конфигом TLS:

gopackage main

import (
  "fmt"
  "net/http"
)

type myHandler struct{}

func (h myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Custom handler response")
}

func main() {
  handler := myHandler{}

  err := http.ListenAndServeTLS(":8443", "cert.pem", "key.pem", handler)
  if err != nil {
    fmt.Println("Server error:", err)
  }
}

Результат выполнения кода:

go"Server started on port 8443 with custom handler"

Пример

Давайте используем функцию с адресом localhost и стандартным обработчиком по умолчанию:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Test endpoint")
  })

  err := http.ListenAndServeTLS("localhost:8080", "localhost.crt", "localhost.key", nil)
  if err != nil {
    fmt.Println("Server error:", err)
  }
}

Результат выполнения кода:

go"Server listening on https://localhost:8080"

Смотрите также

  • функцию http.ListenAndServe,
    которая запускает HTTP сервер без TLS шифрования
  • функцию Server.ListenAndServeTLS,
    которая запускает TLS сервер с дополнительными настройками
  • функцию Server.ListenAndServe,
    которая запускает HTTP сервер с расширенной конфигурацией
  • функцию http.ServeFile,
    которая отдает файлы через HTTP сервер