Метод http.Server.ListenAndServeTLS

Метод http.Server.ListenAndServeTLS запускает HTTPS сервер, используя TLS (Transport Layer Security) для шифрования трафика. Он принимает два строковых параметра: путь к файлу сертификата и путь к файлу закрытого ключа. Метод блокирует выполнение программы до тех пор, пока сервер не будет остановлен. В случае ошибки запуска возвращается ошибка типа error.

Синтаксис

goerr := server.ListenAndServeTLS(certFile, keyFile)

Пример

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

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, HTTPS world!")
  })

  server := &http.Server{
    Addr:  ":443",
    Handler: handler,
  }

  err := server.ListenAndServeTLS("server.crt", "server.key")
  if err != nil {
    fmt.Printf("Server error: %v\n", err)
  }
}

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

go(сервер слушает на порту 443)

Пример

Давайте настроим сервер с пользовательским обработчиком и пользовательским портом:

gopackage main

import (
  "fmt"
  "net/http"
  "time"
)

func main() {
  mux := http.NewServeMux()
  mux.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "API endpoint accessed at %s", time.Now().Format(time.RFC3339))
  })

  server := &http.Server{
    Addr:     ":8443",
    Handler:    mux,
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
  }

  err := server.ListenAndServeTLS("cert.pem", "key.pem")
  if err != nil {
    fmt.Printf("Failed to start server: %v\n", err)
  }
}

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

go(сервер слушает на порту 8443)

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

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