[linux] 리눅스에 프록시 서버 간단구축

급하게 프록시서버를 구축할 일이 있어서.. 언제나 그렇듯 구글링을 잠간 해봤다.
아래 글을 보고 apache를 통한 프록시 구성을 해보고, 나중에 내가 보려고 간략히 적어놓는다.
(↓↓원본 출처)

우선.. 프록시도 2가지가 있다.

  • Forward Proxy : 일반적으로 아는 프록시. 사용자 앞단에서 사용자를 대신해서 웹서핑을 해준다.
  • Reverse Proxy : 서버 앞단에서.. 서버 대신 응대를 해준다.
    부하분산 목적 또는 보안 이슈가 있을경우 혹은 서버 내에 내부서비스가 존재할 경우 사용.

난 간단하게 포워드 프록시 사용하기 위해 구축

다음은 설정방법

우선 Proxy 모듈 활성화

user@debian:~$ su -
root@debian:~# a2enmod ssl
root@debian:~# a2enmod proxy
root@debian:~# a2enmod proxy_connect
root@debian:~# a2enmod proxy_ajp
root@debian:~# a2enmod proxy_balancer
root@debian:~# a2enmod proxy_html
root@debian:~# a2enmod proxy_http

Forward Proxy를 위한 설정

우선 사이트 설정에서 VirtualHost 설정

root@debian:~# vi /etc/apache2/sites-enabled/000-default.conf

## 파일에 추가
<VirtualHost *:8080>
 ProxyRequests On
 ProxyVia On
#	<Proxy "*">
#	 	Require ip 0.0.0.0
#	</Proxy>
 ErrorLog ${APACHE_LOG_DIR}/error_forward_proxy.log
 CustomLog ${APACHE_LOG_DIR}/access_forward_proxy.log combined
</VirtualHost>

특정 IP에서만 접속을 허용하고 싶다면, 주석처리 해놓은 부분을 해제하고 Require ip 에 특정 ip를 입력한다.

그리고 8080포트를 사용하지 않았다면 포트설정에 추가

root@debian:~# vi /etc/apache2/ports.conf

## 파일에 추가
Listen 8080

설정이 끝났으면 서비스 재시작

root@debian:~# service apache2 restart

일단 간단히 사용해보는데.. 잘 되는것 같다.

Reverse Proxy 설정은… 귀찮다.. 일단 코드만 남겨놓는다.
자세한 건 위 원본링크 확인하기 바람.

<VirtualHost *:443>
	ServerName  hiseon.me

	SSLEngine on
	SSLCertificateKeyFile /etc/ssl/hiseon.me/privkey.pem
	SSLCertificateFile /etc/ssl/hiseon.me/cert.pem
	SSLCertificateChainFile /etc/ssl/hiseon.me/fullchain.pem

	SSLProxyEngine On
	SSLProxyCACertificateFile /etc/ssl/hiseon.me/fullchain.pem

	ProxyPreserveHost On
	ProxyRequests Off
	ProxyPass / https://172.17.0.2:443/
	ProxyPassReverse / https://172.17.0.2:443/

	ErrorLog ${APACHE_LOG_DIR}/hiseon.me.error.log
	CustomLog ${APACHE_LOG_DIR}/hiseon.me.access.log combined

	<Directory />
		AllowOverride All
		Options All 
		Require all granted
	</Directory>
</VirtualHost>

위의 웹 서버 설정은 https://hiseon.me 의 요청을 내부망 (172.17.0.2)으로 전달하여 처리하는 내용이라 함.
Forward Proxy 설정은 SSL 연결을 그대로 전달하여 인증서가 없지만 Reverse Proxy 의 경우 내부적으로 요청을 처리해야 하기 때문에 SSL 인증서가 필요하다 함.

Loading