Nginx 와 dnsmasq 를 바탕 으로 경로 의 동적 DNS 분석 을 실현 합 니 다.

2970 단어 dnsdnsmasqnginx
최근 에 전단 친구 와 연락 할 때 에피소드 가 생 겼 습 니 다. 우리 두 프로젝트 는 같은 도 메 인 이름 입 니 다. 그러나 그의 로 컬 은 서버 의 운영 환경 이 없 기 때문에 전단 에 필요 한 hosts 파일 과 요청 인터페이스 에 필요 한 hosts 파일 이 일치 하지 않 는 상황 을 초래 했 습 니 다. 이런 상황 을 바탕 으로 저 는 nginx 를 통 해 서로 다른 경로 와 일치 할 수 있 는 지 고려 하 겠 습 니 다.요청 을 다른 기계 위로?
nginx 는 resolver 명령 을 통 해 도 메 인 네 임 의 DNS 분석 서버 를 설정 할 수 있다 는 것 을 잘 알 고 있 습 니 다. 따라서 경로 가 전단 경로 라면 자신의 DNS 서버 에 요청 하여 도 메 인 네 임 을 이 컴퓨터 로 분석 하고 인터페이스 라면 제 DNS 서버 나 정상 적 인 DNS 서버 를 통 해 다른 주 소 를 분석 합 니 다.
위의 사고방식 에 따 르 면 우 리 는 이 컴퓨터 에 DNS 서버 를 구축 해 야 한다. 여기 서 나 는 dnsmasq 을 선택 했다. 이유 가 없 는데 바로 인터넷 자료 가 많다 는 것 이다.
dnsmasq
설치 하 다.brew 장 착 을 통 해
brew install dnsmasq

배치 하 다.
dnsmasq 설정
프로필 이 있 습 니 다 /usr/local/etc/dnsmasq.conf
  • 설정 listen-address: listen - address = 127.0.1 또는 기타 감청 이 필요 한 내부 네트워크 또는 공공 네트워크 ip 주소
  • 주석 취소 strict-order
  • 사용 하지 않 으 려 면 /etc/hosts/etc/resolve.conf 다음 과 같이 수정 할 수 있다.
  • 설정 resolv-file: resolve - file = / etc / resolv. dnsmasq. conf 파일 이름 마음대로
  • 설정 addn-hosts: addn - hosts = / etc / dnsmasq. hosts 파일 이름 마음대로

  • 설정 resolution
    여기 resolve 는 위 설정 resolv-file 에 대응 하 는 파일 을 말 합 니 다.
    nameserver 127.0.0.1 #      ,          dns  
    nameserver 114.114.114.114

    호스트 설정
    분석 할 도 메 인 이름 을 추가 하면 됩 니 다.
    127.0.0.1 test.tyloafer.cn

    정지 제어
  • 시작: brew services start dnsmasq
  • 정지: brew services stop dnsmasq
  • 재 부팅: brew services restart dnsmasq
  • Nginx
    server {
        listen       80;
        server_name  test.tyloafer.cn;
        root html;
        add_header Content-Type 'text/html; charset=utf-8';
        location ~ /local {
            resolver 127.0.0.1 ipv6=off;
            proxy_pass http://test.tyloafer.cn/1.html$is_args$args;
        }
        location ~ /remote {
            resolver 114.114.114.114;
            proxy_pass http://test.tyloafer.cn/1.html$is_args$args;
        }
        location ~ /1.html {
            add_header Content-Type 'text/html; charset=utf-8';
            return 200 "ok";
        }
    }

    요청 프로 세 스 분석:
    http://test.tyloafer.cn/local
  • 먼저 본 기계 의 dns 분석 에 따라 127.0.0.1, 즉 본 기계
  • 로 분 석 됩 니 다.
  • 그리고 nginx 가 이 요청 을 받 으 면 location ~ /local 규칙 에 일치 합 니 다. 그리고 127.0.0.1 의 DNS 서버 를 호출 합 니 다. 즉, 위 에 설 치 된 것 입 니 다. 이 컴퓨터 로 전송 요청 하 는 /1.html 경로 아래
  • nginx 프 록 시 받 기pass 의 요청 이 일치 합 니 다 location ~ /1.html. 그리고 "ok"
  • 을 출력 합 니 다.
    http://test.tyloafer.cn/remote
  • 먼저 본 기계 의 dns 분석 에 따라 127.0.0.1, 즉 본 기계
  • 로 분 석 됩 니 다.
  • 그리고 nginx 가 이 요청 을 받 으 면 location ~ /remote 규칙 과 일치 합 니 다. 그리고 114.114.114.114 의 DNS 서버 를 호출 합 니 다. 여 기 는 정상 적 인 DNS 분석 을 통 해 실제 서버 주소
  • 를 찾 습 니 다.
  • 대상 서버 의 nginx 받 은 proxypass 요청, 해당 처리 (1. html 내 대상 서버 에 없 기 때문에 404)
  • 좋은 웹페이지 즐겨찾기