nginx 역방향 에이전트 와 위 챗 테스트 전 공략

7051 단어 nginx
머리말
제3자 시스템 과 인터페이스 개발 을 할 때 끊 임 없 는 개선 과 테스트 가 필요 합 니 다. 흔히 볼 수 있 는 위 챗 로그 인 결제 와 알 리 페 이 결제 와 로그 인 을 예 로 들 면 알 리 페 이 는 상대 적 으로 쉽게 할 수 있 습 니 다. 하 나 는 인터페이스 SDK 의 포장 이 간단 하고 오래된 인터페이스 에 도 상대 적 으로 우호 적 이 며 문서 의 의미 가 적 습 니 다. 위 챗 은 쉽 지 않 습 니 다. 안전 을 고려 하여위 챗 의 사업 자 ID 권한 리 셋 과 결제 리 셋 은 백 엔 드 에서 설정 한 주소 만 허용 합 니 다. 추가 할 수 있 을 것 같 지만 제 한 된 경험 에서 추가 해도 소 용이 없습니다. 시간 이 있 으 면 토로 하고 시간 을 들 여 다른 방법 으로 해결 하지 않 습 니 다. 만능 nginx 리 버스 에이전트 기능 을 통 해 저 희 는 테스트 와 정식 환경의 설정 을 도 메 인 주소 로 연결 합 니 다.하지만 서로 다른 매개 변수 방식 으로 해결 되 었 습 니 다.
필드 사용 - 위 챗 테스트
만약 당신 과 정식 서버, 예 를 들 어 bixuebihui. com, 그리고 테스트 용 dev. bixuebihui. com, 정식 위 챗 리 셋 경 로 는 https://bixuebihui.com/pay 이 고 테스트 경 로 는 https://dev.bixuebihui.com/other/pay 위 챗 백 엔 드 가 이전 경로 로 연결 되 어 있 지만 자신의 코드 를 다음 경로 로 테스트 하려 면 nginx 설정 을 어떻게 해 야 합 니까?
잡담 은 그만 하고 코드 를 올 려 라. 아아, 설정:
   servername bixuebihui.com;
     location  /pay {
              proxy_connect_timeout    3;
              proxy_read_timeout       30;
              proxy_set_header    X-Real-IP  $remote_addr;
              proxy_set_header    X-Forwarded-For     $remote_addr;
              proxy_set_header    X-Forwarded-Proto   $scheme;
              proxy_redirect   / /;
              add_header  X-Upstream  $upstream_addr;
              proxy_set_header Host $arg_domain;

              if ($arg_domain ~ "dev\.bixuebihui\.com" ){
                 proxy_pass https://your.private.dev.ip;
                 rewrite /pay/(.*) /other/pay/$1  break;
                 break;
              }
              proxy_pass http://your_super_cluster;
        }

설명:
  • proxy_pass https://your.private.dev.ip; 여 기 는 ip 을 사용 하 는 것 이 좋 습 니 다. Host 는 domain 으로 제어 되 기 때문에 domain 을 사용 하면 안전 에 문제 가 있 을 수 있 습 니 다. 
  • "https://xxxx.weixin.qq.com/xxxapi?redirect_uri=https%3A%2F%2Fbixuebihui.com%2Fpay%3Fdomain%3Dhttps%253A%252F%252Fdev.bixuebihui.com%252Fother%252Fpay&other_params=xxxxxx "위 챗 에 전 달 된 매개 변 수 는 url 전 의 를 진행 합 니 다. 그 중에서 domain 매개 변 수 는 위 챗 에 의 해 그대로 돌아 갈 수 있 습 니 다. 그러면 자신의 수요 에 따라 역방향 대 리 를 완성 할 수 있 습 니 다."

  • 경로 변경 및 도 메 인 이름 처리
    위의 예 에서 실제 서버 에 요청 한 것 은 매개 변수 에 따라 고 쳐 질 수도 있 고 그렇지 않 을 수도 있 습 니 다.
    예 를 들 어 bixuebihui. com / pay / abc. do 를 방문 하여 최종 요청 http://your_super_cluster/pay/abc.do 을 보 내 고 Host 인 자 는 bixuebihui.com 입 니 다. 만약 yoursuper_cluster 에 여러 개의 가상 호스트 가 있 습 니 다. 호스트 헤드 가 bixuebihui. com 의 하나 또는 기본 값 입 니 다.
    bixuebihui. com / pay / abc. do 를 방문 한 경우 domain = dev. bixuebihui. com 은 최종 요청 https://your.private.dev.ip/other/pay/abc.do?domain=dev.bixuebihui.com 을 보 내 고 Host 인 자 는 $arg 입 니 다.domain 의 값, 즉 dev.bixuebihui.com.
    https 처리 방법
    nginx 는 https 에 대한 프 록 시 를 지원 합 니 다. 만약 에 응용 서버 와 nginx 가 하나의 서브 네트워크 에 있다 면 nginx 에 https 를 직접 설정 하 는 것 을 권장 합 니 다. 백 엔 드 는 http 프로 토 콜 을 사용 하면 서버 의 압력 이 많이 줄 어 들 것 입 니 다.
    https 프로 토 콜 을 설정 하면 현재 무료 인증 서 를 사용 할 수 있 습 니 다. 가장 편리 한 요 수 certbot 는 이 사이트 에서 등록 도 필요 없 이 도 메 인 이름 에 인증 서 를 받 을 수 있 습 니 다. nginx 와 apache 등 일반적인 웹 서버 를 자동 으로 설정 할 수 있 습 니 다.완전히 바보 같이 사용 합 니 다. 1 분 에 해결 하 는 것 은 정말 바람 직 하지 않 습 니 다. 2018 년 4 월 쯤 에 2 급 도 메 인 이름 에 대한 지원 을 내 놓 을 것 입 니 다. 그 때 는 더욱 편리 할 것 입 니 다. 정말 양심 적 인 사이트 입 니 다.
    인자 와 redirect
    만약 당신 의 사이트 에 302 와 같은 점프 가 있다 면, 이때 역방향 대 리 는 설정 해 야 합 니 다.
       proxy_redirect   / /;
    

    그렇지 않 으 면 백 엔 드 서버 가 브 라 우 저 에 게 네트워크 전환 경 로 를 되 돌려 접근 할 수 없습니다.
    nginx 설정 정확성 테스트
    생산 환경 을 수정 하기 전에 먼저 백업 해 야 한다.
    기 존의 실행 가능 한 프로필 을 백업 하 는 것 이 좋 습 니 다. 두 가지 방법 이 있 습 니 다. 하 나 는 git, 참고 와 같은 버 전 관리 시스템 입 니 다. 다른 하 나 는 스스로 스 크 립 트 를 써 서 백업 을 관리 하 는 것 입 니 다.
    다음은 제 백업 스 크 립 트 입 니 다. 참고 하 십시오. 경 로 는 당신 의 것 으로 바 꿔 야 합 니 다. 이 스 크 립 트 는 날 짜 를 확장자 로 합 니 다. 같은 날 여러 개의 백업 이 필요 하 다 면 스 크 립 트 를 수정 하 십시오. 구덩이 에 빠 지지 마 십시오.
    nginx_config_backup.sh
    
    ###################################################################
    #######nginx_config_backup###################################################
    #!/bin/sh
    # -----------------------------
    # the directory for story your backup file.
    backup_dir="/home/yourname/backup"
    
    # date format for backup file (dd-mm-yyyy)
    time="$(date +"%Y%m%d")"
    
    MKDIR="$(which mkdir)"
    RM="$(which rm)"
    MV="$(which mv)"
    TAR="$(which tar)"
    GZIP="$(which gzip)"
    
    #      ,        。    
    # check the directory for store backup is writable
    test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0
    
    # the directory for story the newest backup
    test ! -d "$backup_dir" && $MKDIR "$backup_dir"
    
    $TAR -zcPf $backup_dir/$HOSTNAME.nginx.$time.tar.gz  /etc/nginx 
    
    #delete the oldest backup 30 days ago
    find $backup_dir -name "*.gz" -mtime +30 |xargs rm -rf
    exit 0;

    테스트 환경 구축
    또 다른 운영 원칙 은 생산 환경 에서 직접 바 꾸 지 말고 테스트 환경 에서 수정 하고 테스트 를 거 쳐 테스트 를 통과 한 후에 생산 환경 에 업로드 하 는 것 이다.
    확장 팩 설치
    $ sudo apt-get install nginx-extras
    

    이렇게 하면 당신 은 Lua, echo 등 디 버 깅 하기 편리 한 도 구 를 사용 할 수 있 습 니 다.
    echo 사용 은 간단 합 니 다. location 설정 블록 에서:
     echo hello world;
     echo_flush;

    상세 한 설명 은 여기 echo 를 보 세 요.
    만약 당신 이 네트워크 관리 라면, 코드 는 다른 사람 이 쓴 것 이 고, 아주 엉망 으로 썼 다 면 어떻게 합 니까?편안 한 잠 을 잘 수 있 도록 nginx - naxsi 버 전, "Nginx Anti Xss & Sql Injection" 을 설치 할 수 있 습 니 다. 효율 을 잃 고 더 안전 합 니 다.그러나 이 버 전 은 새로운 (15.04 이후) ubuntu 에서 더 이상 업 데 이 트 를 제공 하지 않 습 니 다.필요 하 다 면 설치 원 을 따로 설치 해 야 할 수도 있 습 니 다.
    nginx 설정 파일 을 수 정 했 습 니 다. 테스트 를 하고 다시 시작 해 야 합 니 다.
    nginx -t && service nginx reload

    혹시
    sudo service nginx configtest && sudo service nginx reload

    debug 는 더 많은 정 보 를 출력 할 수 있 습 니 다.
    server {
        #other config
        error_log    /var/logs/nginx/example.com.error.log;
        location /admin/ { 
            error_log /var/logs/nginx/admin-error.log debug; 
        }         
        #other config
    }

    만약 당신 의 역장 방 문 량 이 매우 많다 면, 이렇게 하면 디스크 가 곧 소 모 될 것 이 며, 특정 IP 에 만 debug 정 보 를 쓰 는 것 으로 설정 할 수도 있 습 니 다.
    events {
            debug_connection 1.2.3.4;
    }

    여기 1.2.3.4 는 디 버 깅 할 ip 주소 입 니 다. 자신의 외부 네트워크 ip 을 얻 으 려 면 사이트 가 있 습 니 다.
    curl http://httpbin.org/ip

    이 사이트 에는 http 프로 토 콜 응용 을 디 버 깅 하 는 api 인터페이스 도 많이 있 습 니 다. 간단 하고 사용 하기 쉽 습 니 다.
    총결산
    nginx 는 매우 강력 합 니 다. nginx 의 용법 을 자세히 파악 하면 코드 를 적 게 쓰 고 더욱 건강 한 사 이 트 를 유지 할 수 있 습 니 다.
    관심 있 는 사람 이 있 으 면 다음 에 nginx 안전 방면 의 응용, 캡 처 방지, 공격 방지 등 을 토론 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기