DNS
DNS는 Domain Name System의 약어로, 도메인 이름 시스템입니다. DNS는 일반적으로 도메인 이름 서비스 또는 도메인 이름 확인 서비스라고 불리는 인터넷상의 서비스로, 주로 웹 사이트 도메인 이름과 IP 주소를 변환하는 서비스를 제공합니다.
도메인 이름과 IP의 대응
도메인 이름과 IP 주소는 일대일 대응이지만, 여러 도메인 이름이 동일한 IP 주소에 대응할 수 있습니다. 사람의 이름과 주민등록번호의 관계처럼, 주민등록번호보다 이름을 기억하는 것이 훨씬 더 쉽습니다. IP 주소는 인터넷에서 사용자의 사이트를 식별하기 쉽도록 IP 주소 대신 도메인 이름을 사용하여 사이트 주소를 나타냅니다. .
DNS 작동 방식
인터넷에서 도메인 이름을 사용하려면 두 개의 도메인 이름 서버에서 제공하는 "권한 있는" 도메인 이름 확인이 필요합니다. 국제 도메인 이름인 경우 도메인 이름 등록 기관은 Interinc입니다. 국내 도메인 이름인 경우 도메인 이름 등록 기관은 CNNIC입니다. 모든 도메인 이름을 정상적으로 사용하려면 두 개의 등록 기관에 등록해야 합니다.
예를 들어, www.baidu.com과 같은 웹사이트를 지금 방문하려면 컴퓨터가 이 사이트에 액세스하기 전에 이 사이트의 IP 주소를 알아야 합니다. 그러면 해당 지역의 "마스터 DNS" 서버, 즉 "www.baidu.com"의 IP가 무엇인지 자동으로 쿼리를 보냅니다. 서버에 도메인 이름에 대한 기록이 없으면 상위 DNS로 이동하여 마지막 수준에서도 찾을 수 없을 때까지 검색을 반복합니다. 이때 권한 있는 DNS를 검색한 다음 해당 IP 정보를 컴퓨터에 반환합니다. 귀하의 컴퓨터는 www.baidu.com에 해당하는 서버와 통신할 수 있습니다. 이러한 수준별 쿼리를 "재귀" 쿼리라고 합니다.
hosts 파일
hosts 파일은 접미사가 없는 로컬 시스템 파일이며 내용을 수정하려면 관리자 권한이 필요합니다. 위의 DNS 확인 프로세스에서 볼 수 있듯이 실제 IP 주소를 최종적으로 얻기 전에 각 DNS 확인이 여러 DNS 서버에 의해 전달될 수 있으므로 이는 매우 비효율적입니다. 따라서 컴퓨터에 로컬로 DNS 확인 파일, 즉 호스트 파일도 있습니다. 호스트의 www.baidu.com을 올바른 Baidu 서버 주소로 지정하면 컴퓨터가 올바른 서버와 상호 작용합니다. 로컬 호스트에 매핑 관계가 구성되어 있지 않으면 LAN의 DNS 서버로 이동하여 해당 매핑 관계를 찾습니다. 그래도 존재하지 않으면 로컬 해당 노드의 DNS에서 찾아보고 위에서 언급한 단계를 반복합니다.
nginx 리버스 프록시
프록시: 실제로는 A와 B가 직접 연결될 수도 있었지만 A와 B 사이에 C가 추가되었습니다. 정방향 프록시
는 위의 DNS로 클라이언트의 프록시 역할을 하며 클라이언트에 대한 요청을 보내고 받으며 서버에 투명합니다. 브라우저를 사용하여 http://www.google.com에 액세스하면 잔인하게 차단됩니다. 따라서 해외에 프록시 서버를 설정하고 google.com을 요청할 수 있도록 프록시에 요청하면 해당 구조가 반환됩니다. 요청에 따라 반환되었습니다.
역방향 프록시
는 서버에 대한 프록시 역할을 하며 클라이언트에게 투명합니다. www.baidu.com을 요청하는 것은 10086에 전화를 거는 것과 같습니다. 배후에서 우리에게 서비스를 제공하는 수천 개의 서버가 있을 수 있지만 그것이 어느 것인지 알 필요도 없고 알 필요도 없습니다. 역방향 프록시 서버가 누구인지가 중요합니다. www.baidu.com은 역방향 프록시 서버입니다. 역방향 프록시 서버는 요청을 실제 서버로 전달하는 데 도움이 됩니다. Nginx는 로드 밸런싱에 사용되는 성능이 매우 뛰어난 역방향 프록시 서버입니다.
nginx와 여러 도메인 이름 매핑을 수행하는 호스트
예를 들어, 두 애플리케이션의 도메인 이름은 a.test.com 및 b.test.com입니다.
C:WindowsSystem32driversetc 디렉터리에서 호스트 파일을 찾아 최고 관리자 권한으로 엽니다. 파일 끝에
a.test.com 127.0.0.1 b.test.com 127.0.0.1
를 추가하고 nginx.conf 파일을 수정하고(nginx.conf에는 많은 구성이 있으므로 여기서는 가장 간단한 예일 뿐입니다) http의 {} 내부에 서버를 추가합니다. 다음 내용을 추가하세요.
server { listen 80; server_name a.test.com; //填入自己项目对应的域名 charset utf-8; error_log logs/error.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8888; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号) } } server { listen 80; server_name b.test.com; //填入自己项目对应的域名 charset utf-8; error_log logs/error.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8889; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号) } }
수정 후 nginx 구성 파일을 다시 로드하세요
nginx.exe -s reload
위 내용은 nginx 다중 도메인 전달을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!