web-dev-qa-db-ja.com

NginxはデフォルトでDigitalOceanUbuntu16.04で実行されています

バックグラウンド

だから昨日私は私たちのサーバーで遊んでいました。

その上に、6つほどのコンテナーを実行するdocker-composeプロセスがあり、そのうちの1つはNginxです。私が昨日それで遊んだ前に、それはファイルをうまく提供していました。

私がしたこと

DOで、curl -sSL https://agent.digitalocean.com/install.sh | shを実行することでメトリックをアップグレードできることに気づきました。なんてクールだろ?

それをやった後、奇妙なことが起こり始めました。原因かどうかはわかりませんが、確かに相関関係です。

私が試したこと

DOドロップレットがあり、docker-compose up -dを実行すると、次のようになります。

エラー:root_nginx_1の場合サービスを開始できませんnginx:エンドポイントでの外部接続のプログラミングに失敗しましたroot_nginx_1:ユーザーランドプロキシの開始中にエラーが発生しました:listen tcp 0.0.0.0:80:バインド:アドレスはすでに使用されています

わかりました、それは奇妙です...

以前は機能していましたが、今は起動しませんか?

ps aux -P | grep nginxを実行して、何が起こっているかを確認し、次のようにします。

root      1514  0.0  0.1 124972  1388 ?        Ss   12:57   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  1517  0.0  0.2 125332  2960 ?        S    12:57   0:00 nginx: worker process
root      5716  0.0  0.0  12944   940 pts/1    S+   13:16   0:00 grep --color=auto nginx

うーん、なぜこれらの他のnginxプロセスがあるのですか?

わかりました。次にpkill nginxを実行してそれらを取り除き、次にdocker-compose up -dを実行すると、すべてが正常に起動し、エラーは発生しません。

しかし、example.comサイトにアクセスしても、応答がありません。

構成の問題かもしれないと思って、docker logs root_nginx_1を実行しましたが、何もありません。少なくともいくつかのヘッダーまたはリクエストがログに記録されている必要があります。

次に、必死の最後の試みで、Sudo shutdown -r nowを実行し、プロセス全体を最初からやり直します。

サーバーで実行されているnginxプロセスでも同じ結果になります。

そう、

  1. このnginxプロセスが起動時にサーバー上で実行されるのは正常ですか?
  2. Nginxコンテナを競合せずにポート80でリッスンさせるにはどうすればよいですか?
1

@EEAAのアドバイスに従い、DOエージェントが何をしていたかを実際に調査した後、実際にはポート80と443を使用しています。

DigitalOcean Agentは、送信データにポート80と443を使用します。インバウンドアクセスは必要ありません。エージェントはアウトバウンドデータにのみポートを使用するため、干渉なしにWebサーバーを安全に実行できます。

ポート80は、DigitalOceanメタデータサービスに接続して認証トークンを取得するために使用されます。エージェントはこのトークンを使用して、メトリックバックエンドに対して認証し、その送信を暗号化します。

そしてさらに読んだ後Sudo apt-get purge do-agentおよびSudo rm /etc/apt/sources.list.d/digitalocean-agent.listトリックをしました。

ここでできます そして私はあなたがそうすることをお勧めします、それについてすべて読んでください。

0