Метод http.Server.ListenAndServeTLS
Метод http.Server.ListenAndServeTLS запускает HTTPS сервер,
используя TLS (Transport Layer Security) для шифрования трафика.
Он принимает два строковых параметра: путь к файлу сертификата
и путь к файлу закрытого ключа. Метод блокирует выполнение
программы до тех пор, пока сервер не будет остановлен.
В случае ошибки запуска возвращается ошибка типа error.
Синтаксис
err := server.ListenAndServeTLS(certFile, keyFile)
Пример
Давайте создадим простой HTTPS сервер, который будет обрабатывать запросы на корневой путь:
package 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)
}
}
Результат выполнения кода при успешном запуске:
(сервер слушает на порту 443)
Пример
Давайте настроим сервер с пользовательским обработчиком и пользовательским портом:
package 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)
}
}
Результат выполнения кода при успешном запуске:
(сервер слушает на порту 8443)
Смотрите также
-
функцию
http.ListenAndServeTLS,
которая запускает HTTPS сервер с использованием глобального обработчика -
метод
http.Server.ListenAndServe,
который запускает HTTP сервер без шифрования -
функцию
http.ListenAndServe,
которая запускает HTTP сервер с глобальным обработчиком -
метод
http.Server.Serve,
который запускает сервер на основе переданного слушателя