Я прочитал множество постов о запуске Discourse за прокси Traefik, но, к сожалению, похоже, что я всё ещё что-то упускаю.
С хоста, если я делаю запрос к внутреннему IP-адресу контейнера через curl, я вижу возвращаемый HTML-код мастера настройки Discourse, и Traefik сообщает, что сервис доступен:
Однако при попытке подключиться к домену, который проходит через Traefik, я вижу ожидаемый HTTPS-сертификат, но затем получаю ошибку 504 через несколько секунд.
Вот моя конфигурация Discourse:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
expose:
#- "80:80" # http
#- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: 'redacted'
DISCOURSE_DEVELOPER_EMAILS: 'redacted'
DISCOURSE_SMTP_ADDRESS: smtp.postmarkapp.com
DISCOURSE_SMTP_USER_NAME: redacted
DISCOURSE_SMTP_PASSWORD: redacted
DISCOURSE_NOTIFICATION_EMAIL: noreply@redacted
## Контейнер Docker не имеет состояния; все данные хранятся в /shared
volumes:
- volume:
host: /opt/discourse/shared/standalone
guest: /shared
- volume:
host: /opt/discourse/shared/standalone/log/var-log
guest: /var/log
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
docker_args:
- "-l traefik.enable=true"
- "-l traefik.http.routers.discourse.tls=true"
- "-l traefik.http.routers.discourse.rule=Host(`redacted`)"
- "-l traefik.http.routers.discourse.entrypoints=websecure"
- "-l traefik.http.routers.discourse.tls.certresolver=ledns"
- "-l traefik.http.services.discourse.loadbalancer.server.port=80"
- "-l traefik.http.services.discourse.loadbalancer.server.scheme=http"
run:
- exec: echo "Beginning of custom commands"
- exec: echo "End of custom commands"
У меня есть много других сервисов в том же экземпляре Traefik, настроенных аналогично на разных хостах, и все они работают.
В логах доступа nginx Discourse я вижу запрос, когда делаю curl к локальному IP, но не вижу его, когда делаю curl к домену.
Есть ли какие-либо предложения о том, что упущено? Похоже, что запрос теряется где-то между Traefik и nginx.
