AWS 의 EC2 로 우분투 서버 구축하였습니다. 포트 포워딩에 대해서.
조회수 6772회
아마존웹서비스의 EC2 솔루션으로 우분투 서버에 node.js 환경을 구축하였습니다.
접속 포트를 80번이 아닌 3000번 8080번 등으로 사용하려 합니다.
그러면 접속 URL이 http://XXX.XXX.XXX.XXX:8080 으로 접속해야 하는데,
http://XXX.XXX.XXX.XXX 로 접속할 수 있게 하고 싶습니다.
이를 포트 포워딩 한다고 지칭하는거 맞죠?
- 위 문제에 대한 방법을 알고 싶습니다.
- 추가적으로 팁이 있으면 부탁드립니다. 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
일반적인 포트포워딩
포트포워딩은 리눅스에서 iptables로 할 수 있습니다.
웹 기술 상의 다양한 보안 공격에 대해 탄력적으로 대응하기 어렵습니다. 따라서 웹서버를 사용하는 것이라서 추천하지 않습니다만, 방법은 다음과 같습니다.
iptables -t nat -A PREROUTING -p tcp -d ${Local IP} --dport ${외부에서 들어오는 Port} -j REDIRECT --to-port ${리다이렉션할 Port}
질문하신 것에서는 다음과 같이 되겠습니다.
iptables -t nat -A PREROUTING -p tcp -d ${Local IP} --dport 80 -j REDIRECT --to-port 8080
웹 서버일 경우 보편적인 방법
다른방법으로는 nginx나 apache와 같은 웹 서버를 이용하여 Proxy 서버를 구축하는 방법이 있습니다.
apache의 경우 다음과 같이 합니다. 먼저 apache를 설치해주세요.
먼저 apache 모듈에서 proxy 모듈을 활성화합니다.
# 우분투에서는 다음과 같이 합니다. $ a2enmod proxy proxy_http
다음은 추가해야하는 아파치 설정파일입니다.
ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ProxyPreserveHost On # 접근 도메인을 전달하려면 추가해야함.
그리고 나서 apache 서버를 시작(혹은 재시작)해준 후에 80 port로 접근해보세요. 물론 AWS 방화벽과 우분투 자체 방화벽에서 80 port 를 열어주여야 합니다.
수정답변 NGINX로 하셨으면, 링크를 참고하셔보세요.
nginx의 index 페이지가 보이는 것이라면 설정상에서 / 를 proxy 로 처리하지 않은것 같습니다.
/etc/nginx/sites-available/default
server { listen HTTP서버포트; server_name 도메인.com; location 전달할경로 { proxy_pass http://APP_PRIVATE_IP_ADDRESS:PORT; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
예시>
server { listen 80; server_name 도메인.com; location / { proxy_pass http://127.0.0.1:9000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
위와 같이 하시면 http://도메인.com/ 로 요청들어올 경우에 전달합니다. 만약 아직 도메인이 없으신 경우, 외부에서 접근하게 되는 IP를 써주거나, 잘 모르겠으면
listen 80; server_name 도메인.com;
대신에 다음과 같이 쓰고 해보세요.
listen 80 default_server; server_name _;
그리고 뒤의 location 부분이 중요합니다. location 다음에 오는 경로가 URL의 Path Prefix입니다. 위 예제는 /로 되어 있기 때문에 전체에 대한 설정이 됩니다.
- 제가 하고자 하는 목적에 두 번째 방법을 추천하신다는 말씀이죠? 정말 감사합니다. 두 번째 방법으로 더 알아보고 적용해야겠네요. 알 수 없는 사용자 2016.4.28 14:00
- 네, 키워드를 "우분투 아파치 reverse proxy" 로 검색해보시면 많은 글들이 있습니다. 허대영(소프트웨어융합대학) 2016.4.28 14:05
- 말씀해주신 키워드로 검색하여 구축해보았는데, nodejs 웹 애플리케이션 포트 9000, ubuntu nginx 설치 후 proxy_pass 값을 localhost:9000 하여 서버에 접속해보니 nginx index 페이지가 보입니다... url 에 :9000를 붙여야 nodejs웹 애플리케이션 페이지가 나오는데 어디가 문제일까요... 무엇을 간과하고 있는걸까요... ㅠㅠ 알 수 없는 사용자 2016.4.29 17:41
댓글 입력