![Iptables를 사용하여 개발 환경 구축](https://linux55.com/image/108288/Iptables%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EA%B0%9C%EB%B0%9C%20%ED%99%98%EA%B2%BD%20%EA%B5%AC%EC%B6%95.png)
모든 애플리케이션이 두 부분으로 분할되는 개발 환경을 설정하려고 합니다. ReactJS 프런트엔드의 액세스 주소는 http://127.0.0.1:3000
이고 Ruby 백엔드의 액세스 주소는 입니다 http://127.0.0.1:3001
.
내 항목에 다음 두 줄을 추가했습니다 /etc/hosts
.
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
이렇게 하면 유사한 브라우저 요청을 할 때 http://myapp.dev
이를 로 리디렉션해야 합니다 http://127.0.0.1:3000
. 내 프런트엔드가 AJAX를 사용하여 API를 호출할 때 http://api.myapp.dev
이 요청을 로 리디렉션해야 합니다 http://127.0.0.1:3001
.
127.0.0.2
에서 모든 요청을 라우팅해야 합니다 127.0.0.1:3000
.127.0.0.3
127.0.0.2:3001
역방향 프록시를 설정하면 이 작업을 수행할 수 있다는 것을 알고 있습니다. 그러나 여러 가지 이유로 IPTABLES를 사용하여 이 작업을 수행할 수 있는지 알고 싶습니다. 그렇다면 무엇을 해야 할까요?
미리 감사드립니다!
답변1
127.0.0.2:80
에서 로 액세스를 리디렉션하려면 127.0.0.1:3000
다음을 수행하세요.
# iptables -t nat -A PREROUTING -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
체인의 첫 번째 규칙은 PREROUTING
localhost가 아닌 다른 곳에서 들어오는 트래픽과 일치합니다. 체인의 두 번째 규칙은 OUTPUT
localhost의 트래픽과 일치합니다.
iptables 체인의 규칙이 처리됩니다.~을 위한, 따라서 이러한 규칙보다 먼저 일치하는 기존 규칙이 방화벽에 있는 경우 결과가 예상과 다를 수 있습니다.
자세한 내용은 REDIRECT
Target 에 대해 읽어보세요.iptables 확장맨 페이지.