0

私の環境に設定ミスがあると思いますので、ご意見を伺いたいです。それを解決するためのアドバイスやヘルプは大歓迎です。

説明: 仮想ホスト名で jwilder/nginx-proxy コンテナーを使用して LDAP 管理者にアクセスする際に問題が発生しますが、公開されたポートを使用して実際の Linux ホスト名を介してアクセスすると正常に動作します。アクセスは、有効なワイルドカード証明書を使用した HTTPS で行われます。

環境: Linux (CentOS 7) で docker を実行しています。jwilder/nginx-proxy を使用して 1 つの docker コンテナーをセットアップし、さらに 2 つの docker コンテナーをセットアップしたいと考えています。したがって、ポートを公開せずに、ldapadmin へのアクセスは nginx を介して行われます。

これまでの手順:

1. コンテナの作成 - nginx プロキシ

docker run -d -p 80:80 -p 443:443 \
  -v /home/admin/nginx/certs:/etc/nginx/certs \
  -v /var/run/docker.sock:/tmp/docker.sock:ro \
  --name proxy \
  jwilder/nginx-proxy

2. コンテナーの作成 - ldap

docker run --name ldap -p 636:636 \ 
 -v /home/admin/nginx/certs:/container/service/slapd/assets/certs \
 -v /data/slapd/database:/var/lib/ldap \
 -v /data/slapd/config:/etc/ldap/slapd.d \
 --hostname ldap.company.com \
 --add-host=ldap.company.com:192.168.168.168 \
 --env LDAP_ORGANISATION='Company ltd' \
 --env LDAP_DOMAIN='company.com' \
 --env LDAP_ADMIN_PASSWORD='Password' \
 --detach osixia/openldap:1.2.2 \

「192.168.168.168」の代わりに、実際のパブリック IP アドレスです

次に、LDAPの検索に成功しました

docker exec ldap \
  ldapsearch -x -H ldap://ldap.company.com \
  -b dc=company,dc=com \
  -D "cn=admin,dc=company,dc=com" \
  -w Password\

3. コンテナー phpldapadmin を作成します。

docker run \
 --name ldapadmin \
 --env PHPLDAPADMIN_LDAP_HOSTS=ldap.company.com \ 
 --expose 389 \
 -e VIRTUAL_HOST=ldap.company.com \
 -e VIRTUAL_PORT=389 \
 --volume /home/admin/nginx/certs:/container/service/phpldapadmin/assets/apache2/certs \
--env PHPLDAPADMIN_HTTPS_CRT_FILENAME=ldap.company.com.crt \
--env PHPLDAPADMIN_HTTPS_KEY_FILENAME=ldap.company.com.key \
--env PHPLDAPADMIN_HTTPS_CA_CRT_FILENAME=ldap.company.com.crt \
--detach osixia/phpldapadmin:0.7.2

最後に、nginx プロキシ コンテナーを再起動して、ldap と ldapadmin を nginx 構成に自動的に追加します。

docker 再起動プロキシ

次に、この公開ポートを取得します。

画像ポート名

osixia/phpldapadmin:0.7.2 80/tcp、389/tcp、443/tcp ldapadmin

オシクシア/openldap:1.2.2 389/tcp、0.0.0.0:636->636/tcp ldap

Linux サーバーのホスト名は dev.company.com であり、パブリック アドレスがあり、https://dev.company.com:6443で ldapadmin にアクセスできますが、URL: ldap からはアクセスできません。 .company.com、ポートを公開せずに。Linux ホスト自体で ldap.company.com.key に ping を実行できません。

注: Jenkins に対しても同じことを行いました。

docker run -d --rm -u root -v /var/run/docker.sock:/var/run/docker.sock -v jenkins-data:/var/jenkins_home -v "$HOME":/home -e VIRTUAL_HOST=jenkins.company.com -e VIRTUAL_PORT=8080 --name nj ジェンキンス

そしてアーティファクトの場合:

docker run --name artifact -d -v /var/opt/jfrog/artifactory:/var/opt/jfrog/artifactory -e VIRTUAL_HOST=artifactory.company.com -e VIRTUAL_PORT=8081 artifactory-oss

これら2つの両方について、ping可能なURLがあり、パブリックIPアドレスが返され、ブラウザーを介して正常にアクセスできます:jenkins.company.comおよびartifactory.company.com

Linux ホスト自体で ldap.company.com.key に ping を実行できません。

4

3 に答える 3

0

暗闇の中でつまずく人のために: プロキシは HTTPS のものを処理しているので、そのために apache は必要ないので、次の環境変数で phpldapadmin を実行します:

environment:
  - PHPLDAPADMIN_TRUST_PROXY_SSL=true
  - PHPLDAPADMIN_HTTPS=false

nginx-proxy がすべてのネットワークを内部で処理するため、docker イメージのポートは公開しません。

同じ問題を抱えていましたが、これは解決しました。これは、letsencrypt-proxy-companion が「高度なセットアップ」をセットアップする方法であるため、この方法で行うことを考えました

于 2019-09-07T19:46:22.660 に答える