React 애플리케이션은 기본적으로 http://localhost:3000
에서 실행됩니다. 포트를 80으로 변경하고 외부에서 접속할 수 있도록 하려면 몇 가지 설정을 해야 합니다. 아래에서 필요한 과정을 설명하겠습니다.
포트를 80으로 변경하기 위해서는 두 가지 옵션이 있습니다.
package.json
에 설정 추가react-scripts
를 사용 중인 경우, package.json
파일에서 다음과 같이 start
스크립트를 수정할 수 있습니다.
"scripts": {
"start": "PORT=80 react-scripts start"
}
하지만, Windows 환경에서는 이 방법이 작동하지 않습니다. Windows에서는 cross-env
라는 패키지를 사용해야 합니다.
npm install cross-env
그런 다음 package.json
에서 start
스크립트를 다음과 같이 수정합니다.
"scripts": {
"start": "cross-env PORT=80 react-scripts start"
}
PORT
환경 변수를 직접 설정하는 방법도 있습니다. 이 방법은 운영체제에 따라 다릅니다.
Linux / macOS:
PORT=80 npm start
Windows (PowerShell):
$env:PORT=80; npm start
Windows (CMD):
set PORT=80 && npm start
기본적으로 create-react-app
은 localhost
에서만 애플리케이션을 실행합니다. 외부에서 접근할 수 있게 하려면 package.json
에 다음 설정을 추가합니다.
"scripts": {
"start": "HOST=0.0.0.0 PORT=80 react-scripts start"
}
이렇게 하면 0.0.0.0
인터페이스에서 애플리케이션을 실행하므로, 외부에서 접속할 수 있습니다.
Linux와 macOS에서 포트 80과 같은 낮은 번호의 포트를 사용하려면 루트 권한이 필요합니다. 그러므로 포트 80에서 애플리케이션을 실행하려면 sudo
명령을 사용해야 합니다.
sudo PORT=80 npm start
개발 환경에서 포트를 80으로 바꾸는 것은 가능하지만, 프로덕션 환경에서는 Nginx나 Apache 같은 리버스 프록시 서버를 사용하여 포트 80에서 들어오는 요청을 React 애플리케이션으로 프록시하는 것이 일반적입니다.
이 경우, React 애플리케이션은 기본적으로 포트 3000 또는 다른 포트에서 실행되며, Nginx가 포트 80에서 요청을 받고 이를 React 애플리케이션으로 전달하게 됩니다.
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000; # React 앱이 실행 중인 포트
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Nginx는 포트 80에서 요청을 받고, React 애플리케이션은 포트 3000에서 실행되며 Nginx가 프록시 역할을 합니다.
포트 번호를 변경한 후에는, 다른 클라이언트가 애플리케이션에 접근하기 위해 브라우저의 URL 창에 http://서버의-IP-주소:새-포트번호
형식을 사용해야 합니다.
http://223.194.135.40:5000
포트 번호가 80일 때는 HTTP 프로토콜의 기본 포트이기 때문에 URL에서 생략됩니다.
서버가 인터넷에 연결되어 있고 공용 IP 주소를 가지고 있다면, 그 IP 주소를 사용해 접근할 수 있습니다.
123.456.789.101
이라면:http://123.456.789.101
포트를 80으로 설정했기 때문에 기본적으로 http://123.456.789.101
로 접속하면 됩니다. 포트 80은 HTTP의 기본 포트이므로 따로 포트 번호를 입력할 필요가 없습니다.
만약 도메인 이름이 설정되어 있다면, 클라이언트는 그 도메인을 사용해 접속할 수 있습니다.
example.com
이라는 도메인이 설정되어 있다면:http://example.com
마찬가지로, 포트 80에서 실행 중이므로 포트 번호를 따로 입력하지 않아도 됩니다.
만약 동일한 로컬 네트워크(예: 회사나 집의 Wi-Fi 네트워크)에 있는 다른 컴퓨터나 장치가 접근하려는 경우, 서버의 로컬 IP 주소를 사용해야 합니다.
192.168.1.100
이라면:http://192.168.1.100
ipconfig
명령을 입력합니다.ifconfig
명령을 입력하거나, ip addr
명령을 사용해 IP 주소를 확인할 수 있습니다.만약 서버가 로컬 네트워크 내에 있고, 외부에서 접근할 수 있도록 하려면 포트 포워딩 설정을 해야 할 수 있습니다. 이는 주로 가정용 라우터에서 설정되며, 포트 80의 요청을 해당 서버로 전달하도록 라우터를 구성해야 합니다.
localhost
)와 0.0.0.0
인터페이스의 차이0.0.0.0
의 주요 차이점localhost
(127.0.0.1)0.0.0.0
localhost:3000
에서 실행: 본인 컴퓨터에서만 접근 가능. 다른 장치에서 접근 불가능.0.0.0.0:3000
에서 실행: 본인 컴퓨터뿐만 아니라 같은 네트워크에 연결된 다른 장치나, 공용 IP를 통해 인터넷을 통한 접속도 가능.0.0.0.0
을 사용하나요?0.0.0.0
으로 설정하면 외부의 네트워크 장치들도 해당 서버에 접속할 수 있기 때문에, 개발 중에 여러 장치에서 테스트를 하거나 네트워크 환경에서 접근을 허용할 때 유용합니다.
로컬 네트워크에서 다른 장치로부터 애플리케이션 테스트
localhost
가 아닌 0.0.0.0
에서 실행하면, 동일 네트워크에 있는 다른 컴퓨터나 스마트폰 등에서도 애플리케이션을 접속해볼 수 있습니다.서버에서 애플리케이션 실행
0.0.0.0
에서 실행하면 해당 서버에 접속할 수 있는 다른 클라이언트들도 애플리케이션을 사용할 수 있게 됩니다. 이 경우 0.0.0.0
을 사용해 외부 트래픽을 허용합니다.