ASP.NET Core에서 테스트를 돌리면 외부에서 접속이 불가능합니다.
이건 IISExpress, Kestrel 공통입니다.
좀 복잡하게 설정하는 방법이 있지만 엄청 귀찮습니다.
이럴 땐 외부로 플록시 해주는 프로그램을 사용해야 합니다.
이 포스팅에서는 "iisexpress-proxy"를 이용합니다.
로컬 서버를 외부에 노출 시키기 - iisexpress-proxy
로컬 서버를 외부에 노출 시키기 - ngrok
"iisexpress-proxy"는 Node.js 기반 프로그램입니다.
NPM이 설치돼있지 않다면 설치해 줍니다.
참고 : [Node.js] 윈도우에서 'Node.js'와 'NPM'을 설치하기
NPM 5.2.0버전 이상이면 모듈이 내장되어 있다고 합니다.
모듈이 없으면 아래 명령어를 입력하여 설치해 줍니다.
1
|
npm install -g iisexpress-proxy
|
cs |
이제 아래 명령어를 사용하여 포트를 포워딩 할 수 있습니다.
1
|
npx iisexpress-proxy [로컬 포트] to [플록시 포트]
|
cs |
만약 외부 9080 포트를 내부 8080 으로 연결하고 싶다면
예> npx iisexpress-proxy 8080 to 9080
이렇게 입력합니다.
내부에 주소가 바인딩되있지 않으면 503 에러가 날 수 있습니다.
이럴 땐 포트만 연결하지 마시고 주소를 연결해 줍니다.
예> iisexpress-proxy https://localhost:8080 to 9080
너무나 당연하게도 방화벽을 열어줘야 접속이 됩니다.
방화벽까지 열었으면 외부에서 아이피를 이용해 접속이 가능합니다.
이번에 여러 대의 api서버를 묶어서 한대처럼 운영하는 프로젝트다 보니 혼자 테스트하면 문제가 없는데 여러 사람이 붙으면 간헐적으로 500에러가 나는 겁니다.
그래서 다시 이 짓을 ㅋㅋㅋㅋ
이것보다 편한 방법이 있는데 해당 프로그램이 제가 찾질 못하고 있습니다 ㅋㅋㅋㅋ
찾으면 다음 포스팅을 하도록 하죠.
참고 자료
Thomas Ardal - Access ASP.NET Core website hosted on IIS Express from a phone
Github : icflorescu/iisexpress-proxy