Функция http.ListenAndServeTLS
Функция http.ListenAndServeTLS запускает HTTPS сервер,
который принимает входящие соединения на указанном адресе и
порту, используя протокол TLS для шифрования трафика.
В первый параметр мы передаем адрес для прослушивания,
во второй параметр мы передаем путь к файлу сертификата,
в третий параметр мы передаем путь к файлу приватного ключа,
в четвертый параметр мы передаем обработчик запросов.
Синтаксис
err := http.ListenAndServeTLS(addr, certFile, keyFile, handler)
Пример
Давайте запустим простой HTTPS сервер, который будет возвращать приветственное сообщение на все запросы:
package 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)
}
}
Результат выполнения кода:
"Server running on https://localhost:443"
Пример
Давайте создадим сервер с кастомным обработчиком и собственным конфигом TLS:
package 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)
}
}
Результат выполнения кода:
"Server started on port 8443 with custom handler"
Пример
Давайте используем функцию с адресом localhost и стандартным обработчиком по умолчанию:
package 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)
}
}
Результат выполнения кода:
"Server listening on https://localhost:8080"
Смотрите также
-
функцию
http.ListenAndServe,
которая запускает HTTP сервер без TLS шифрования -
функцию
Server.ListenAndServeTLS,
которая запускает TLS сервер с дополнительными настройками -
функцию
Server.ListenAndServe,
которая запускает HTTP сервер с расширенной конфигурацией -
функцию
http.ServeFile,
которая отдает файлы через HTTP сервер