Моя внутренняя служба находится в контейнере Docker, размещенном в Azure Service Fabric.И сервис с учетом состояния.Поэтому мы используем Traefik для преобразования запроса с сохранением состояния в состояние без сохранения состояния.Для этого Traefik направляет запрос от внешнего интерфейса к нашему внутреннему интерфейсу.Он отлично работает, когда он использует HTTP.Теперь нам нужно включить HTTPS на внешнем интерфейсе.
Я настроил HTTPS для Azure Service Fabric.Когда я захожу на узел кластера, я могу зайти на свой серверный сервис по частному IP.Но я не могу посетить свой сервис из настроенного домена.Журнал Traefik показывает «сервер не найден».Я использую самоподписанный сертификат.И вот моя конфигурация:
[traefikLog]
filePath = "log/traefik.log"
format = "json"
logLevel = "DEBUG"
# Enable debug mode
#
# Optional
# Default: false
#
debug = true
# Traefik logs file
# If not defined, logs to stdout
#
# Optional
#
#traefikLogsFile = "log/traefik.log"
# Log level
#
# Optional
# Default: "ERROR"
#logLevel = "DEBUG"
# Entrypoints to be used by frontends that do not specify any entrypoint.
# Each frontend can specify its own entrypoints.
#
# Optional
# Default: ["http"]
#
defaultEntryPoints = ["http", "https"]
# Entrypoints definition
#
# Optional
# Default:
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
email = "abc@abc.com"
storage = "acme.json"
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
entryPoint = "https"
[acme.httpChallenge]
entryPoint = "http"
[[acme.domains]]
main = "domain1.azure.com"
[[acme.domains]]
main = "domain2.azure.com"
[entryPoints.traefik]
address = ":8080"
# Enable access logs
# By default it will write to stdout and produce logs in the textual
# Common Log Format (CLF), extended with additional fields.
#
# Optional
#
[accessLog]
# Sets the file path for the access log. If not specified, stdout will be used.
# Intermediate directories are created if necessary.
#
# Optional
# Default: os.Stdout
#
filePath = "log/log.txt"
# Format is either "json" or "common".
#
# Optional
# Default: "common"
#
# format = "common"
################################################################
# API definition
################################################################
[api]
# Name of the related entry point
#
# Optional
# Default: "traefik"
#
entryPoint = "traefik"
# Enabled Dashboard
#
# Optional
# Default: true
#
dashboard = true
# Enable debug mode.
# This will install HTTP handlers to expose Go expvars under /debug/vars and
# pprof profiling data under /debug/pprof.
# Additionally, the log level will be set to DEBUG.
#
# Optional
# Default: false
#
debug = true
################################################################
# Service Fabric provider
################################################################
# Enable Service Fabric configuration backend
[servicefabric]
filename = "custom_config_template.tmpl"
debugLogGeneratedTemplate = true
# Service Fabric Management Endpoint
clustermanagementurl = "https://localhost:19080"
# Note: use "https://localhost:19080" if you're using a secure cluster
# Service Fabric Management Endpoint API Version
apiversion = "3.0"
refreshSeconds = 10
# Enable TLS connection.
#
# Optional
#
[serviceFabric.tls]
cert = "certs/servicefabric.crt"
key = "certs/servicefabric.key"
insecureskipverify = true
# Enable REST Provider.
[rest]
# Name of the related entry point
#
# Optional
# Default: "traefik"
#
entryPoint = "traefik"
Вот некоторые вопросы, которые я не понимаю:
В панели инструментов,почему интерфейс все еще HTTP не HTTPS?
Почему я не могу посетить свой сервис из домена https://domain1.azure.com?
Нужно ли включать https длямой бэкэнд сервис тоже?Сейчас я сделал это, но я думаю, что это может быть ненужным, потому что https или http для моей бэкэнд-службы имеют значение только тогда, когда Traefik вызывает мой бэкэнд.Но нам просто нужно включить https при вызове внешнего интерфейса Traefik.Я прав?
В любом случае, поскольку я также включил https для своей серверной службы, нужно ли привязывать свою серверную службу к тому же сертификату, который я настроил в [entryPoints.https?.tls]?