Привет, ребята, разработчики,
Ради всего святого, я не могу заставить это работать ... У меня есть контейнер docker с приложением феникс. Он размещен на поддомене «sub.example.com», и мне нужно обслужить его с помощью https.
Итак, я получил сертификат SSL с подстановочным знаком, установил его, настроил рабочий файл и открыл порты 80 и 443 контейнера docker.
Попробовал и порт 80 работает нормально, но 443 всегда возвращает "ERR_CONNECTION_RESET". В логах ничего не показывается на 443, но на 80 работает нормально.
Уже некоторое время пытаюсь, а теперь мне нужна ваша помощь. Есть идеи, что случилось? Проверьте код ниже:
Dockerfile
FROM bitwalker/alpine-elixir-phoenix:latest
# create app folder
RUN mkdir /app
WORKDIR /app
COPY . .
# setting the port and the environment (prod = PRODUCTION!)
EXPOSE 80
EXPOSE 443
# install dependencies (production only)
RUN mix local.rebar --force
RUN mix deps.get --only prod
RUN mix compile
prod.exs
config :example, ExampleWeb.Endpoint,
http: [port: 80],
url: [host: "sub.example.com"],
cache_static_manifest: "priv/static/cache_manifest.json",
https: [
cipher_suite: :strong,
otp_app: :example,
port: 443,
keyfile: System.get_env("SSL_KEY_PATH"),
certfile: System.get_env("SSL_CERT_PATH"),
cacertfile: System.get_env("SSL_CHAINED_CERT_PATH")
]
* Trying 64.225.24.82...
* TCP_NODELAY set
* Connected to sub.example.com (64.225.24.82) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to sub.example.com:443
* Closing connection 0
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to sub.example.com:443
EDIT: я устанавливаю переменные ENV внутри контейнера вручную. Например, в bash:
SSL_KEY_PATH=path/example.key SSL_CERT_PATH=path/example.crt SSL_CHAINED_CERT_PATH=path/example_chained.crt MIX_ENV=prod mix phx.server