私が欲しいもの
から「失われた接続」のメッセージがhttps://github.com/jwilder/nginx-proxyパッケージがあります。これは "HTTP"には非常に便利ですが、私はそれをTCPにも使いたいと思います。あなたが見ることができるように、私はnginx.conf
にstream {}
ブロックを追加したhttps://github.com/fchris82/nginx-proxy/commit/33d80ea4d4be5d511e4dab0413d516770aa15262ドッカープロキシ:ホストマシン
と/etc/nginx/stream.conf.d
ディレクトリ:(MySQLの)ここで
は私の変化です。ここでは、ストリームブロックのdefault.conf
が生成されます:あなたはエラーを再現することができますどのように私が何をしたか
access_log off;
error_log /var/log/nginx/debug.log debug;
resolver 127.0.0.11;
# whoami.loc
upstream whoami.loc {
## Can be connect with "nginxproxy_default" network
# nginxproxy_mysql_1
server 192.168.32.2:3306;
}
server {
listen whoami.loc:81;
proxy_pass whoami.loc;
}
、
# Set host
> sudo echo "127.0.0.1 whoami.loc" >> /etc/hosts
# Start containers
> docker-compose up -d
# "Login" the proxy container
> docker-compose exec nginx-proxy /bin/bash
# Test connect to MySQL from proxy container
root> mysql -u root -proot -h whoami.loc -P 81
# --> OK, it works! Let's exit.
mariadb> \q
# Exit from container
root> exit
# Check host
> ping whoami.loc
# --> OK, 127.0.0.1
# Check docker ports
> docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
nginxproxy_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp
nginxproxy_nginx-proxy_1 /app/docker-entrypoint.sh ... Up 0.0.0.0:180->80/tcp, 0.0.0.0:81->81/tcp
nginxproxy_whoami_1 /app/http Up 8000/tcp
# --> OK
# Try to direct connection from host (You can read the IP from the /etc/nginx/stream.conf.d/default.conf file)
> mysql -u root -proot -h 192.168.32.2
# --> OK, exit
mysql> \q
# Try to connect from host with "domain" through docker proxy
> mysql -u root -proot -H whoami.loc -P 81 --protocol=tcp
# ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2
ので、コンテナから動作しますが、なぜホストから動作しない理由を誰のアイデアを持っています?
「ソリューション」
ありは、私が本当に欲しいもののために解決ではありません。私はこのようなものが欲しかった:Nginx TCP forwarding based on hostname。 Tarun's answerがエラーメッセージを解決しました。ありがとうございます。
あなたは 'server' proxy_passを実行していて、' stream' proxy_passを実行することを期待していますか? –
@ TarunLalwani何を意味するのか分かりません。インクルードされたconfは 'stream {}'ブロックにあります。ここには 'server'-sもあります:https://www.nginx.com/resources/admin-guide/tcp-load-balancing/ –
Okie私の悪い、私は正しく設定を読んでいない、それがストリームブロックの一部であることを見ていない。あなたは 'telnet whoami.loc 81'を試してみて、あなたが得たものを見ることができますか? –