
0.0.0.0 부분은 주소, 즉 호스트입니다. 프로세스가 0.0.0.0을 리스닝한다는 것은 모든 네트워크 인터페이스에서 리스닝한다는 의미입니다. 즉, 다른 컴퓨터(인터넷상의)가 여러분 컴퓨터의 IP 주소로 요청을 보내면 그 요청을 볼 수 있습니다. 따라서 0.0.0.0을 리스닝한다는 것은 (컴퓨터가 인터넷에 연결되어 있다면) 해당 프로세스가 퍼블릭 인터넷에서 접근 가능하다는 의미입니다.
대부분의 프로그래밍 프레임워크는 개발 중일 때 0.0.0.0을 리스닝하지 않습니다. 개인 정보 보호와 보안을 위해 작업 중인 내용을 반드시 외부에 노출시키고 싶지는 않기 때문입니다. 대신, 127.0.0.1이라는 다른 주소, 흔히 localhost라고 불리는 주소를 리스닝합니다. 이는 같은 컴퓨터에서만 해당 포트에 요청을 보낼 수 있다는 의미입니다.


:80은 내부 포트 :3000에 바인딩되어 있습니다. 즉, 해당 Replit App이 포트 80으로 받는 모든 트래픽은 내부 포트 3000으로 전달됩니다.
이 구성은 .replit 구성 파일의 [[ports]] 섹션에 기록됩니다.
기본적으로 Replit은 처음 열린 포트를 기본 외부 포트 80에 바인딩하여, 해당 프로세스를 포트 주소 없이 도메인에서 사용할 수 있도록 합니다(예: customdomain.com:3000/ 대신 customdomain.com/). 이후에 열리는 추가 내부 포트는 다른 사용 가능한 외부 포트에 바인딩됩니다(전체 목록은 아래를 참조하세요).
프리뷰
프리뷰 도구에서는 도메인을 클릭하고 다른 포트를 선택하여 웹뷰가 렌더링하는 외부 포트를 변경할 수 있습니다. “설정” 아이콘에서 네트워킹 도구를 열어 더 자세한 정보를 확인할 수도 있습니다.
기본 포트
포트 :80은 http 트래픽의 “기본 포트”이므로, 루트 도메인으로 전송된 http 트래픽은 자동으로 포트 80으로 라우팅됩니다. 이런 이유로 포트 80에서는 URL에 포트 경로가 표시되지 않습니다. :80 이외의 포트는 도메인 경로에 표시됩니다(예: customdomain.com:4200/). (Replit은 기본적으로 TLS를 제공하므로 실제로는 https의 기본 포트인 443을 통해 전송됩니다. 실질적으로는 두 포트를 서로 바꿔서 사용할 수 있다고 생각해도 됩니다.)
네트워킹 도구
포트 구성과 네트워킹에 대한 자세한 내용을 확인하려면 네트워킹 도구를 열 수 있습니다. 이 도구는 Replit App에서 열려 있는 포트의 상태, 각 포트가 바인딩된 외부 포트, 그리고 구성을 추가하거나 제거할 수 있는 기능을 보여줍니다.
게시
Autoscale 및 Reserved VM 배포는 하나의 외부 포트만 노출하는 것을 지원하며, 해당 내부 포트가localhost를 사용하지 않아야 합니다. 포트를 여러 개 노출하거나 localhost에서 단일 포트를 노출하면 게시한 앱이 실패합니다. Autoscale 배포가 예상대로 동작하도록 하는 쉬운 방법은 인터넷에서 접근하려는 서비스의 포트를 제외한 모든 externalPort 항목을 구성에서 제거하는 것입니다.
디버깅
예상대로 동작하지 않는 흔한 원인 중 하나는 포트 구성은 올바른 것처럼 보이지만 실제로 프로그램이 다른 포트를 보고 있는 경우입니다. 예를 들어 구성이 다음과 같다면:
환경설정
Replit App에서 포트가 열리면 Replit이 자동으로 사용 가능한 외부 포트에 바인딩하고, 그 바인딩을 .replit 구성 파일에 기록합니다. 하지만 localhost에서 열리는 내부 포트에서는 기본적으로 이런 동작이 일어나지 않습니다. localhost에서 실행되는 서비스는 일반적으로 프로세스를 실행 중인 동일한 컴퓨터에서만 접근 가능하다고 가정하기 때문입니다(localhost 포트는 해당 프로세스를 실행 중인 컴퓨터에서만 볼 수 있습니다). 즉, 이러한 서비스는 퍼블릭 인터넷에 공개될 것을 가정하고 만들어진 서비스보다 보안 수준이 낮은 경우가 많습니다. 노출하고 싶은 포트에 대해exposeLocalhost 구성 옵션을 true로 설정하면 언제든 이 동작을 재정의할 수 있습니다.
localhost 포트를 기본적으로 항상 노출하고 싶다면 사용자 설정 도구에서 “자동 포트 포워딩” 설정을 “모든 포트”로 설정할 수 있습니다.
열려 있는 포트에 대한 구성을 절대 자동으로 만들지 않고, Replit App의 모든 포트 구성을 직접 관리하고 싶다면 이를 “안 함”으로 설정할 수 있습니다.
지원되는 포트
Replit App은 첫 포트가 열릴 때 기본적으로 포트 80을 외부 포트로 정의합니다. Replit App은 추가 외부 포트로 3000, 3001, 3002, 3003, 4200, 5000, 5173, 6000, 6800, 8000, 8008, 8080, 8081을 노출할 수 있습니다. 포트 22와 8283은 내부적으로 사용되므로 포워딩할 수 없습니다.[[ports]] .replit 구성
타입: {localPort, externalPort, exposeLocalhost}
[[ports]] 구성을 사용하면 웹 출력에 노출할 HTTP 포트를 설정할 수 있습니다. 기본적으로 호스트가 0.0.0.0인 노출된 모든 HTTP 포트는 Replit App의 웹 출력으로 노출됩니다.
기본 포트를 재정의하지 않고 추가 포트를 서비스하려면 .replit 파일에 새로운 [[ports]] 항목을 추가하세요. localPort와 externalPort 항목을 모두 지정해야 합니다. 아래에 정의된 대로 .replit 파일에 여러 개의 [[ports]] 항목을 추가하여 여러 개의 추가 포트를 추가할 수 있습니다.
localPort
Replit이 어떤 포트를 외부 포트에 바인딩할지를 결정합니다.externalPort
해당 로컬 포트를 위해 퍼블릭에 접근 가능한 포트로 노출할 포트를 결정합니다.localPort 구성은 유지하고 externalPort는 추가하지 않으면 됩니다.
exposeLocalhost
localhost를 사용하는 내부 포트를 외부 포트에 바인딩할 수 있는지를 결정합니다. true, false, 또는 null이 가능합니다.