NGINX를 Reverse Proxy로 Apache를 Web으로 연결하기

나의 프로젝트에서는 NGINX를 reverse proxy로 동작하게 할 것이다. 프로젝트용 홈페이지 구현은 중요하기 때문에 이를 우선적으로 구현해 보고자 하였다.

나와 같은 초보자에게 이 부분은 꽤나 어렵다. 그 이유는 Client – Server (Web) 라는 단순한 구조가 아니기 때문이다. Client – NGINX – Web 으로 구성이 되어야 하는데 기본 설정으로만 따라가면 Web은 NGINX에서 오는 데이터로만 받아보기 때문이다. 잘 모르는 상태에서 글로만 표현하려니 힘든데, 이 부분의 설정을 수정하지 않으면 WordPress 기반으로 운영할 Web 서비스에서 링크가 blog.my-network으로 Client에게 제공이 된다. 당연히 Client는 Docker 밖에 있으니 저런 링크로는 서비스가 제대로 이루어질 수 없게 된다.

우선 NGINX 가 있는 컨테이너의 nginx.conf 파일을 다음과 같은 설정으로 reverse proxy를 구성한다. WordPress를 설치한 컨테이너로는 8080 포트를 이용하도록 했다. proxy_pass 이외의 설정이 있어야 client 의 정보도 같이 전달이 된다고 한다.

location / {
	proxy_pass http://blog.my-network:8080;
	proxy_set_header Host $host;
	proxy_set_header X-Real_IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

WordPress를 설치한 컨테이너에서 Apache의 ports.conf 파일을 수정하여 80포트가 아닌 8080 포트로 서비스 하도록 한다.

Listen 8080

Apache의 apache2.conf 파일을 수정한다. 왜 인지는 모르겠는데, 이렇게 하니까 되었다. ㅠ

ServerName my-domain

<VirtualHost my-domain:8080>
        ServerName my-domain:8080
        ServerAlias my-domain
</VirtualHost>