なぜ私のAレコードはApacheサーバーを指しているのでしょうか

なぜ私のAレコードはApacheサーバーを指しているのでしょうか

ウェブサーバーは nginx と apache2 の 2 つあります。mail.aboutryansam.com の A レコードと webmail.aboutryansam.com の CNAME があります。mail.aboutryansam.com でホストされている postfix と dovecot メールサーバーと、webmail.aboutryansam.com でホストされている roundcube メールクライアントを設定しようとしています。Ubuntu 18 を実行しています。メールサーバー用に 2 つのディレクトリ /var/www/nginx/mail.aboutryansam.com/ があります。roundcube 用に /var/www/html があります。デフォルトでは、apache2 と nginx は同じポートで実行されるため、ポート 81 を使用するように nginx を変更しました。apache ディレクトリにデフォルトの HTML ページがあり、nginx ディレクトリにカスタム ページを作成しました。mail.aboutryansam.com にアクセスすると、Apache HTML ページが表示されますが、nginx ディレクトリから作業するための conf ファイルがあります。

server {
  listen 81;
  server_name mail.aboutryansam.com;

  location {
    root /var/www/nginx/mail.aboutryansam.com
    index index.html index.htm;

    # proxy_pass http://localhost:3010;
    # proxy_set_header Host $host;
    # proxy_set_header X-Real-IP $remote_addr;
  }
}

Web サーバーの実行に多くの問題があり、サーバー管理の初心者なので、十分に説明できなかったら申し訳ありません。回答していただける場合は、「--verbose」を使用してください。前述したように、私はこの分野の初心者です。

答え1

DNS A レコードはサービスではなく IP アドレスを指します。Apache/nginx などのサービスには、実行されているマシンの IP アドレスとポートでアクセスできます。

入場するとhttp://mail.aboutryansam.comブラウザではデフォルトの HTTP ポートに接続するので80198.58.105.140:80Apache がリッスンしている場所に接続します。server_nameリクエストはすでに Apache に入っているため、この時点では nginx で定義したポートは考慮されません。

ポート 81 でリッスンしているサービスに接続する場合は、これを明示的に指定する必要があります。http://mail.aboutryansam.com:81

:81URL にこれを含めたくない場合は、次のオプションがあります。

  • 設定するリバースプロキシポート80のサーバーのポート81へ -
  • 複数のマシン/IPが利用可能な場合は、Apacheとnginxを別々のマシンにバインドして、両方がポート80にバインドできるようにし、それに応じてDNSレコードを変更します。

関連情報