로컬 환경에서 서버에 있는 정보를 요청해야 할 때에, 가상 도메인에 붙어있는 포트 정보 local-domain:8080 때문에 Cross Origin 이슈가 발생한다.

윈도우에서야 80 포트로 간단히 변경해 주면 되지만, OSX에서는 1024 포트 이하의 포트들을 루트 권한 없이는 사용이 불가하기 때문에 우회하는 방법을 사용해야 한다.


Port Forwarding

https://gist.github.com/kujohn/7209628

기존에는 ipfw를 통해 포트포워딩을 하였지만, Mavericks 이후로는 pf로 대체되었다. 아래 내용은 위 링크된 블로그의 내용을 참고했다.

1. Anchor 파일 생성

/etc/pf.anchors/<anchor file> 위치에 Anchor 파일을 생성한다. Anchor 파일에는 아래의 Redirection Rule 을 적어준다.

rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080

2. Anchor 파일 테스트

테스트를 통해 작성된 Anchor 파일에 특별한 이슈가 없는지 파악한다.

sudo pfctl -vnf <anchor file>

3. pf.conf 참조

/etc/pf.conf 파일은 부트시에 PF가 로드하는 메인 설정 파일이다. 이전에 생성한 Anchor 파일을 사용하기 위해서 기존 메인 설정 파일을 복사하거나, 새로운 설정파일을 만든다.

sudo touch /etc/<custom .conf file>

내용은 아래와 같이 채워준다.

rdr-anchor "forwarding"
load anchor "forwarding" from "/etc/pf.anchors/<anchor file>"

4. 로드하고 PF 적용

Mavericks 에서 PF는 기본으로 실행되지는 않는다. 블로그에서는 몇 가지 방법으로 소개하나, 로컬 환경에서 테스트를 위한 용도로 사용할 예정이라 수동으로 적용하는 방법 하나만 기록한다.

sudo pfctl -ef <custom .conf file>

이 외에도 부트 시에 자동으로 로드하거나, pfctl 명령어에 alias를 추가하는 방법 등이 있다.


AJP를 이용한 ProxyPass

/etc/apache2/httpd.conf 파일에 아래 한 줄 추가 후 아파치를 재실행 apachectl restart 한다.

ProxyPass / ajp://localhost:8080/