Azure VM にデプロイされた Nginx アプリケーションの DNS タイムアウトをデバッグする

Azure VM にデプロイされた Nginx アプリケーションの DNS タイムアウトをデバッグする

Nginx Web サーバーを使用して、Azure VM にアプリケーションを展開しています。アプリケーションは、スーパーバイザーを使用して Nginx サーバーと gunicorn サーバーをセットアップします。すべての構成とログ ファイルを確認しましたが、すべて正常に動作しているようです。ただし、ブラウザーで Web サイトにアクセスすると、www.mydomain.com ではブラウザーがタイムアウトし、mydomain.com では次の結果が返されます。

This site can’t be reached
mydomain.com’s server DNS address could not be found.

Azure では、次のものを含む DNS ゾーンを設定しました。

Name: @ TYPE: NS TTL: 120 VALUE: relevant azure name servers.
Name: www TYPE: CAME TTL 60 mydomain.com

ドメイン レジストラでは、Azure DNS 名に従って DNS 名を設定しました。

私のローカルマシンには次のものがあります:

ブラウザのキャッシュをフラッシュしました。nslookup www.mydomain.com をチェックしました

Server:         127.0.1.1
Address:        127.0.1.1#53

Non-authoritative answer:
Name: www.mydomain.com
Address: xxx.xxx.xx.xx

traceroute を試したところ、xxx.msn.net アドレスが [closed] なしで見つかったので、サーバーが見つかったと推測します。

試しました:

host -t A www.mydomain.com
>>www.mydomian.com is an alias for mydomain.themsazureaddress.com
>>mydomain.themsazureaddress.com has address xxx.xxx.xx.xx

Web サーバーには次のものがあります:

netcatを試しました:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:http                  *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 *:https                 *:*                     LISTEN     
tcp        0      0 localhost:8000          *:*                     LISTEN     
tcp        0      0 localhost:6379          *:*                     LISTEN 

そしてnetstat:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      62133/nginx     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      62133/nginx

nginx の設定を確認しました:

upstream app_server_wsgiapp {  
     server localhost:8000 fail_timeout=0;
}

server {  
 listen 80;
 server_name myapp.com; 
 rewrite ^(.*) https://$server_name$1 permanent;
}

server {  
  server_name           myapp.com;
  listen                443 ssl;

nginx エラーおよびアクセス ログを確認しました:

アクセス ログは空ですが、エラー ログには次の内容のみが含まれます:

epoll add event: fd:11 op:1 ev:00000001

また、プロセスも確認しましたが、supervisor、gunicorn、redis、celery はすべて正常に動作しています。私は sqlite だけを使用しているので、データベースの設定について心配する必要はありません。

アプリケーションが表示されない理由をデバッグするための他の提案はありますか?

答え1

ユーザーの VM 構成に NSG がありませんでした。

ネットワーク セキュリティ グループ (NSG) には、仮想ネットワーク内の VM インスタンスへのネットワーク トラフィックを許可または拒否するアクセス制御リスト (ACL) ルールのリストが含まれています。

NSG は、サブネットまたはそのサブネット内の個々の VM インスタンスに関連付けることができます。NSG がサブネットに関連付けられている場合、ACL ルールはそのサブネット内のすべての VM インスタンスに適用されます。さらに、NSG をその VM に直接関連付けることで、個々の VM へのトラフィックをさらに制限できます。

Azure Portal で NSG を構成する:

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-create-nsg-arm-pportal

関連情報