간단하게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에 따라 라이센스가 부여됩니다.