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 을 사용 하면 안전 에 문제 가 있 을 수 있 습 니 다. 경로 변경 및 도 메 인 이름 처리
위의 예 에서 실제 서버 에 요청 한 것 은 매개 변수 에 따라 고 쳐 질 수도 있 고 그렇지 않 을 수도 있 습 니 다.
예 를 들 어 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 안전 방면 의 응용, 캡 처 방지, 공격 방지 등 을 토론 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.