내 A 레코드가 내 Apache 서버를 가리키는 이유는 무엇입니까?

내 A 레코드가 내 Apache 서버를 가리키는 이유는 무엇입니까?

두 개의 웹 서버 nginx와 apache2가 있습니다. mail.aboutryansam.com에 대한 A 레코드와 CNAME webmail.aboutryansam.com이 있습니다. 저는 mail.aboutryansam.com에서 호스팅되는 postfix 및 dovecot 메일 서버와 webmail.aboutryansam.com에서 호스팅되는 roundcube 메일 클라이언트를 설정하려고 노력해 왔습니다. 저는 Ubuntu 18을 실행하고 있습니다. 메일 서버에 /var/www/nginx/mail.aboutryansam.com/ 디렉토리가 두 개 있습니다. 그리고 roundcube에는 /var/www/html이 있습니다. 기본적으로 apache2와 nginx는 동일한 포트에서 실행되므로 nginx를 포트 81을 사용하도록 변경했습니다. 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;
  }
}

웹 서버를 운영하는 데 많은 어려움을 겪고 있고 서버 관리가 처음이라 제대로 설명하지 못해서 죄송합니다. 저에게 도움을 주고 답변을 주실 수 있다면 제가 이 분야에 익숙하지 않다고 말한 것처럼 "--장황하게" 말해주세요.

답변1

DNS A 레코드는 서비스가 아닌 IP 주소를 가리킵니다. Apache/nginx와 같은 서비스는 실행 중인 시스템의 IP 주소와 포트를 통해 접근할 수 있습니다.

당신이 들어갈 때http://mail.aboutryansam.com브라우저에서는 기본 HTTP 포트에 연결되므로 Apache가 수신 대기하는 위치 80에 연결됩니다 198.58.105.140:80. 요청이 이미 Apache에 입력되었기 때문에 nginx에서 정의한 내용 server_name은 이 시점에서 고려되지 않습니다.

포트 81에서 수신 대기하는 서비스에 연결하려면 다음을 명시적으로 지정해야 합니다.http://mail.aboutryansam.com:81

:81URL에 이를 원하지 않는 경우 옵션은 다음과 같습니다.

  • 설정역방향 프록시포트 80에서 서버의 포트 81로 -
  • 사용 가능한 시스템/IP가 여러 개인 경우 Apache와 nginx를 서로 다른 시스템에 바인딩하여 둘 다 포트 80을 바인딩하고 이에 따라 DNS 레코드를 변경할 수 있습니다.

관련 정보