❓Local 서버
모든 컴퓨터는 서버(Server)의 역할을 할 수 있는 능력을 가지고 있다. 로컬 서버 란 말 그대로 내 컴퓨터에서 프로젝트의 서버 환경을 구성한다는 의미이고, 이렇게 만든 서버를 특정 명령어로 실행할 수 있다. 당연히 서버를 어떤 환경으로 만들었는지에 따라 서버를 실행시키는 명령어가 달라진다.
❓IP & PORT
우리는 어떤 지점을 찾을 때 어떤 선택을 하는가?
예를 들어 홍대역을 찾아간다고 하자 대부분의 사람들은 홍대역의 주소를 찾아서 갈 것이다.
하지만 사실 홍대의 정확한 위치는 위도 경도 값으로 결정된다고 할 수 있다.
서버에서도 이것이 적용된다.
- IP주소란 Internet Protocal Address 즉 인터넷(컴퓨터)의 절대적 주소이다.
- 하지만 직관성 및 편의성 때문에 도메인 주소를 이용하여 접근하는 경우가 많다.
서버에 접근할 수 있는 다양한 문이 존재하는데 이를 PORT라고 한다.
서버에서는 접근하는 사람이 사용자냐 관리자냐에 따라 PORT번호를 다르게 접근한다.
HTTP와 HTTPS의 경우 지정된 포트 번호가 있는데 이런 것들을 "잘 알려진 포트들" "Well-known port"이라고도 한다.
HTTP는 80번, HTTPS는 443 포트로 접속하는 것으로 약속이 되어있다.
❓포트포워딩(Port-Forwarding)
쉽게 말해서 공유기에게 이정표를 달아주는 것이다.
공유기를 설치하게 되면 공유기와 연결된 PC들은 IP를 공유기로부터 부여받게 된다.
친구 집에서 21번 포트로 요청이 왔는데 공유기는 지금 상황에서는 어느 PC로 연결해 줘야 하는지 모르는 상태이다.
따라서 당연히 요청이 실패하게 된다.
이때 공유기에게 이정표를 달아주는 것을 포트 포워딩(Port-Forwarding)이라고 한다.
21번 포트로 요청이 오면 공유기는 포트 포워딩 즉 이정표를 통해 192.168.0.20번 PC로 정확하게 요청을 받아드릴 수 있는 것이다.
📖 포트포워딩 실습
Local 서버 구축
나는 맥북을 사용 중에 있기에 Bitnami MAMP를 통해 맥 환경에 Apache / MySQL / PHP를 한 번에 설치해주었다.
나는 처음 Bitnami를 설치할 때 Apache 웹서버 포트를 추천해 주었는데 8082로 설정했기 때문에 주소창에
127.0.0.1:8082로 접속하였다. 위와 같은 화면이 뜨면 정상적으로 실행이 된 것이다.
phpinfo 띄우기
설치한 MAMP 폴더에 wampstack-8.0.10-1 디렉터리의 apache2 > htdocs 폴더에 phpinfo.php 파일을
<?
php phpinfo();
?>
다음과 같이 작성해주고 저장해준다.
wampstack-8.0.10-1 디렉토리의 apache2 > htdocs에 위치하는 파일이 서버 IP 접속 시, default로 응답해주는 페이지들이다.
다음과 같이 phpinfo 페이지가 정상적으로 나오는 것을 확인할 수 있다.
포트 포워딩
ipTime 공유기는 192.168.0.1로 접속해 관리자 설정을 할 수 있다.
본인이 설정해 둔 아이디와 비밀번호(설정을 안 했다면 초기값 아이디 비밀번호 모두 admin)로 접속 후
다음과 같이 NAT/라우터로 들어가 본인의 내부 IP주소와 외부 포트, 내부 포트를 설정해 둔다.
여기서 지속해서 포트 포워딩이 안 되는 현상이 발생했는데 위에서 말했다시피 내 로컬에서 Bitnami의 Apache는 8082 포트였다.
하지만 당연히 내부 포트가 80이라 생각하고 80으로 설정했더니 당연히 포트 포워딩이 정상 작동되지 않았다.
- 로컬 IP 주소 (내부 IP 주소) : 공유기로부터 할당받은 접속한 기기의 IP
- 외부 포트 : 외부에서 어떤 포트로 접속하였을 때 지정된 컴퓨터로 연결할 것인지 설정
- 내부 포트: 외부 포트에서 연결해주었을 때, 내부에서는 어떤 포트를 사용할 것인지 설정. 나 같은 경우에는 8082를 부여받았으므로 8082
접속 확인
이제 외부 기기로부터 로컬 서버로의 접근이 가능하다.
❗주의할 점
같은 인터넷(와이파이)을 사용하고 있는 기기가 아닌 다른 기기를 이용하여야 한다.
'Server Program' 카테고리의 다른 글
AWS Nginx에 HTTPS 적용하기 (Let's Encrypt) (0) | 2021.09.24 |
---|---|
도메인 구입(가비아) 및 설정 (0) | 2021.09.24 |
AWS Nginx에 PHPMyAdmin 설치하기 (0) | 2021.09.22 |
MySQL 외부접속 - MySQL Workbench 사용 (2) | 2021.09.22 |
AWS에 Nginx, MySQL, PHP 구축 및 Nginx - PHP 연동 (0) | 2021.09.20 |