간단하게ngrok 서버를 구축하여 내부 네트워크 관통을 실현하다
왜ngrok 서버를 구축합니까
웹 개발을 할 때, 우리는 로컬 웹 사이트를 외부 인터넷 방문에 노출시켜야 한다. (예를 들어 내가 로컬 개발 위챗을 할 때)
ngrok는 역방향 에이전트 도구로 우리는 홈페이지의 클라이언트를 직접 다운로드하여 사용할 수 있지만 홈페이지 서버가 외국에 있기 때문에 비교적 느리고 무료 버전은 2급 도메인 이름을 연결하는 것을 지원하지 않는다.
뭐 공부 해요?
단계
1.git,golang,openssl 설치
yum install -y git golang openssl
git 버전과 golang 버전은 너무 낡으면 안 됩니다. centos7은 기본적으로git1.8.3, go1.8.3을 설치합니다.
2. clonengrok 항목을 로컬로 이동
git clone https://github.com/inconshreveable/ngrok.git /usr/local/ngrok
3. 인증서 생성
#
export NGROK_DOMAIN="huahongbin.cn"
# ngrok
cd /usr/local/ngrok
#
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
# ngrok
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
4. 서로 다른 플랫폼의 서버와 클라이언트를 컴파일한다
# 64 linux
GOOS=linux GOARCH=amd64 make release-server
# 64 windows
GOOS=windows GOARCH=amd64 make release-server
# mac ,GOOS=darwin。 32 ,GOARCH=386
실행 후ngrok/bin 디렉터리와 하위 디렉터리에서 서버
ngrokd와 클라이언트ngrok.exe를 볼 수 있습니다.5. 서버 시작
# , http, https, tcp ,
./bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":8082" -tunnelAddr=":443"
6. 클라이언트 시작
장ngrok.exe 로컬 폴더로 복사 (winscp 가능), 폴더 새 프로필ngrok.cfg, 내용은 다음과 같습니다.
server_addr: "huahongbin.cn:443"
trust_host_root_certs: false
도메인 이름은 자신의 독립 도메인 이름으로 바꾸고, 포트는ngrok 서버를 시작하는 터널 포트로 바꿉니다.
그런 다음 cmd에서 다음 명령을 사용하여 시작합니다.
ngrok.exe -subdomain=jueying -config=ngrok.cfg 80
80 프록시를 위한 로컬 포트
브라우저에서 지다http://127.0.0.1:4040구체적인 요청 정보를 볼 수 있다.
FAQ
go get gopkg.in/yaml.v1는 Git 버전이 너무 낮기 때문에 서버git 버전을 1.7.9.5 이상으로 업그레이드하십시오.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.