ホームページ  >  記事  >  運用・保守  >  nginx を使用して複数の Docker コンテナをリバースプロキシする

nginx を使用して複数の Docker コンテナをリバースプロキシする

藏色散人
藏色散人転載
2019-09-21 10:05:466509ブラウズ

はじめに

以前 docker を紹介したとき、その利点の 1 つは、複数の環境を同じサーバー上に構築し、互いに分離できることであると述べました。昨日実際に運用してみたのですが、まさかこれほど落とし穴が多く、これまで一からサーバーを構築するよりも時間がかかるとは思いませんでした。何度か計画を変更してようやく解決したので、途中の悲しさは無視して操作方法についてお話します。

推奨チュートリアル: nginx チュートリアル

アーキテクチャ

laradock イメージはすでにサーバーに存在しており、laravel を実行できます。環境およびその他の PHP には、nginx、mysql、redis などが含まれます。

私のアイデアは、リバース プロキシ用に別の nginx コンテナを追加することです。サブドメイン名に従って配布します。これは、laradock またはその他のコンテナー (wordpress、python、java を含む) などに配布できます。

lradock を変更します

変更された場所は 1 つだけあり、nginx がリッスンするポートです。

1. laradock ディレクトリに入ります

2. .env ファイルを変更し、NGINX_HOST_HTTP_PORT 値を 80 から 8000 に変更します

3. nginx を停止し、docker-compose stop nginx

4. nginx を再インストールし、docker-compose build nginx

5. docker-compose up -d nginx

を起動します。現時点では、ブラウザーで正常にアクセスできません。 . nginx がポート 80 をリッスンしなくなったためです。

nginx コンテナーの追加

リバース プロキシ用の新しい nginx コンテナーを追加します。 laradockをインストールすると、すでにnginx:alpineのイメージが存在しており、コンテナを直接生成することができます。もちろん、新しいイメージを再度取得することもできます。 (Alpine バージョンを推奨します)

1. nginx イメージ ID を確認します (docker iamges)

2. 新しい nixn コンテナーを生成します (docker run --name proxy_nginx -p 80:80 -d [ nginx イメージ ID]。 -v パラメータを追加して構成ファイルをマップすることもできます。私の環境では変更が少なく、必要ありません。

3. この時点でブラウザでアクセスすると、nginx のデフォルト ページになるはずです。起動が成功したことを示します

4. 生成されたコンテナーを入力します docker exec -it proxy_nginx sh

5. vim をインストールし、apk vim を追加します

6. ホスト IP を確認します, /sbin/ip Route| awk '/default/ { print $3 }'

7. 次の内容を含む新しい構成ファイル laradock.conf を /etc/nginx/conf.d/ ディレクトリに追加します

server {
    listen  80;
    server_name  you_site;
    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}

1. コンテナを終了し、docker restart proxy_nginx

##2. ポート 8000 を開きます。こちらを参照してください

##結論

#この時間にアクセスすると、その中でlaradock nginxにプロキシできます。将来他のコンテナを追加したい場合は、proxy_nginx に新しいプロキシ ルールを追加するだけです。

以上がnginx を使用して複数の Docker コンテナをリバースプロキシするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。