ngrok의 도메인 이름을 고정 할 때 "Bad Request"오류를 피하십시오.
http://28f1ac85.ngrok.io
와 같이 ngrok.io
앞에 매번 다른 문자열이 할당됩니다. 그것이라고 조금 사용하기 어려우므로, 아래의 기사를 참고로 ngrok의 플랜을 Basic 이상으로 올려, 도메인명을 고정했습니다.ngrok에서 항상 동일한 주소를 사용하는 방법 - Qiita
매우 이해하기 쉬웠습니다
그런데 도메인을 고정했을 때만 왜인지 "Bad Request"오류가 나오게 되었습니다.
물론 로컬 웹 서버가 시작되고 있습니다.
결국, 원인은 단순했습니다만, 꽤 빠져 버렸습니다.
(같은 증상의 사람이 없기 때문에, 혹시 Mac만일지도?)
증상
하위 도메인을 등록한 후 사이트의 지시에 따라 터미널에서 ngrok을 시작합니다.
./ngrok http -subdomain=testtest 8080
정상적으로 움직이고 있는 것 같다.
ngrok by @inconshreveable
Session Status online
Account fukusin (Plan: Pro)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwardinghttp://testtest.ngrok.io -> http://localhost:8080
Forwarding https://testtest.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
3 0 0.00 0.00 0.00 0.00
그러나 로컬 웹 서버를 시작하고 브라우저에서 http://testtest.ngrok.io
에 액세스하면 터미널에 오류가 발생합니다.
HTTP Requests
-------------
GET /favicon.ico 400 Bad Request
GET / 400 Bad Request
물론 로컬 웹 서버에도 요청이 없습니다.
원인
80번 포트로 연결하여 에러의 상세를 확인합니다.
Failed to complete tunnel connection
The connection to http://testtest.ngrok.io was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:80.
Make sure that a web service is running on localhost:80 and that it is a valid address.
The error encountered was: dial tcp [::1]:80: connect: connection refused
Failed to complete tunnel connection ???
성공적으로 포트를 지정할 수 없는 것 같고 http://testtest.ngrok.io -> http://localhost:80
사이의 터널 연결에 실패했습니다.
ngrok의 사양인가 Mac 환경의 문제인가는 불명합니다만, 대책을 해 갑니다.
대책
도메인과 localhost 둘 다 같은 포트를 지정하여 시작하면 좋을 것 같습니다.
도메인의 경우 ./ngrok http -subdomain=testtest 8080
localhost의 경우 ./ngrok http -host-header=localhost 8080
그러나이 두 명령은 동시에 사용할 수 없습니다.
그래서 방금 전 기사 을 참고로 ngrok.yml 를 사용해 기동합니다.
ngrok.yml을 사용하면 옵션을 정리할 수 있으므로 매번 시작이 쉬워집니다.
ngrok.ymlauthtoken: <トークン文字列>
region: us
tunnels:
process1:
proto: http
addr: 8080
host_header: localhost 8080
subdomain: testtest
Mac의 경우 [ユーザー]/.ngrok2/ngrok.yml
에 저장됩니다.
localhost의 포트도 지정하고 싶으므로 기사의 코드에 host_header: localhost 8080
를 추가하고 있습니다.
저장하고 터미널에서 부팅합니다.
./ngrok start process1
ngrok by @inconshreveable
Session Status online
Account fukusin (Plan: Pro)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://testtest.ngrok.io -> http://localhost:8080
Forwarding https://testtest.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
기동 화면은 에러가 나왔을 때와 같은 내용입니다만, 브라우저로 http://testtest.ngrok.io
에 액세스 하면, 이번은 정상적으로 Web 서버에 연결됩니다.
HTTP Requests
-------------
POST / 200 OK
안전하게 웹 서버에서도 요청을 받았습니다.
궁극적으로 시작 명령을 ./ngrok start process1
로 바꾸면 "Bad Request"오류를 피할 수 있습니다.
도움이 되면.
Reference
이 문제에 관하여(ngrok의 도메인 이름을 고정 할 때 "Bad Request"오류를 피하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukusin/items/f898c1e06d43b674e753
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
./ngrok http -subdomain=testtest 8080
ngrok by @inconshreveable
Session Status online
Account fukusin (Plan: Pro)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwardinghttp://testtest.ngrok.io -> http://localhost:8080
Forwarding https://testtest.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
3 0 0.00 0.00 0.00 0.00
HTTP Requests
-------------
GET /favicon.ico 400 Bad Request
GET / 400 Bad Request
80번 포트로 연결하여 에러의 상세를 확인합니다.
Failed to complete tunnel connection
The connection to http://testtest.ngrok.io was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:80.
Make sure that a web service is running on localhost:80 and that it is a valid address.
The error encountered was: dial tcp [::1]:80: connect: connection refused
Failed to complete tunnel connection ???
성공적으로 포트를 지정할 수 없는 것 같고
http://testtest.ngrok.io -> http://localhost:80
사이의 터널 연결에 실패했습니다.ngrok의 사양인가 Mac 환경의 문제인가는 불명합니다만, 대책을 해 갑니다.
대책
도메인과 localhost 둘 다 같은 포트를 지정하여 시작하면 좋을 것 같습니다.
도메인의 경우 ./ngrok http -subdomain=testtest 8080
localhost의 경우 ./ngrok http -host-header=localhost 8080
그러나이 두 명령은 동시에 사용할 수 없습니다.
그래서 방금 전 기사 을 참고로 ngrok.yml 를 사용해 기동합니다.
ngrok.yml을 사용하면 옵션을 정리할 수 있으므로 매번 시작이 쉬워집니다.
ngrok.ymlauthtoken: <トークン文字列>
region: us
tunnels:
process1:
proto: http
addr: 8080
host_header: localhost 8080
subdomain: testtest
Mac의 경우 [ユーザー]/.ngrok2/ngrok.yml
에 저장됩니다.
localhost의 포트도 지정하고 싶으므로 기사의 코드에 host_header: localhost 8080
를 추가하고 있습니다.
저장하고 터미널에서 부팅합니다.
./ngrok start process1
ngrok by @inconshreveable
Session Status online
Account fukusin (Plan: Pro)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://testtest.ngrok.io -> http://localhost:8080
Forwarding https://testtest.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
기동 화면은 에러가 나왔을 때와 같은 내용입니다만, 브라우저로 http://testtest.ngrok.io
에 액세스 하면, 이번은 정상적으로 Web 서버에 연결됩니다.
HTTP Requests
-------------
POST / 200 OK
안전하게 웹 서버에서도 요청을 받았습니다.
궁극적으로 시작 명령을 ./ngrok start process1
로 바꾸면 "Bad Request"오류를 피할 수 있습니다.
도움이 되면.
Reference
이 문제에 관하여(ngrok의 도메인 이름을 고정 할 때 "Bad Request"오류를 피하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukusin/items/f898c1e06d43b674e753
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
authtoken: <トークン文字列>
region: us
tunnels:
process1:
proto: http
addr: 8080
host_header: localhost 8080
subdomain: testtest
./ngrok start process1
ngrok by @inconshreveable
Session Status online
Account fukusin (Plan: Pro)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://testtest.ngrok.io -> http://localhost:8080
Forwarding https://testtest.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
HTTP Requests
-------------
POST / 200 OK
Reference
이 문제에 관하여(ngrok의 도메인 이름을 고정 할 때 "Bad Request"오류를 피하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fukusin/items/f898c1e06d43b674e753텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)