본문 바로가기

Server

Ubuntu 20.02.2 LTS + Apache2 + Https + Proxy

728x90

 

오늘도 한창 헤맨 관계로 불친절한 글을 써보려 한다

본 문서의 환경 :

  • Ubuntu 20.04.2 LTS
  • Apache2
  • lets encrypt certbot
  • 도메인 : ex.kr (설명을 위한 예시 도메인)

 

내가 가꾸고자 하는 환경은 이렇다

 

apache2 에서 proxy 설정으로
sv.ex.kr 로 접속할 때는 localhost:8080 으로 연결 되고
fr.ex.kr 로 접속할 때는 localhost:8081 로 연결 되도록 하고싶다!!!!!

이전 환경에서는 http 로 했었는데, 보안상 마음에 걸려서 이번엔 https 를 시도했다.

인스턴스 : AWS 에서 Ubuntu20.04 인스턴스 생성, 도커 설치, apache2 설치
인증서 : 남들 하는 것처럼 snap 을 이용해서 certbot 도 받고 도메인 입력해서 인증서 설치

그런데 apache2 VirtualHost 설정 방법 찾기가 쉽지 않았다

그래서 내가 설정한 apache2 설정을 적어두려고 한다

먼저 아래는 sv.ex.kr 설정

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName sv.ex.kr
        ServerAdmin {500에러시 사용자에게 보여줄 내 이메일 주소}

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

        ProxyRequests Off
        SSLProxyEngine on

        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode

        <Proxy http://localhost:8080*>
                Order deny,allow
                Allow from all
        </Proxy>

        SSLEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off

        SSLCertificateFile /etc/letsencrypt/live/ex.kr/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/ex.kr/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        ProxyPass / http://127.0.0.1:8080/ nocanon
        ProxyPassReverse / http://127.0.0.1:8080/

</VirtualHost>
</IfModule>

 

그리고 fr.ex.kr 설정

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName fr.ex.kr
        ServerAdmin {500에러시 사용자에게 보여줄 내 이메일 주소}

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

        ProxyRequests Off
        SSLProxyEngine on

        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode

        <Proxy http://localhost:8081*>
                Order deny,allow
                Allow from all
        </Proxy>

        SSLEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off

        SSLCertificateFile /etc/letsencrypt/live/ex.kr/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/ex.kr/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        ProxyPass / http://127.0.0.1:8081/ nocanon
        ProxyPassReverse / http://127.0.0.1:8081/

</VirtualHost>
</IfModule>

 

둘 간의 차이점 : 네 줄

ServerName fr.ex.kr
<Proxy http://localhost:8081*>
ProxyPass / http://127.0.0.1:8081/ nocanon
ProxyPassReverse / http://127.0.0.1:8081/

 

혹시나 하는 마음에 000-default-le-ssl.conf 도 올림. certBot 이 바꾼 그대로 건든 것 없음

<IfModule mod_ssl.c>
<VirtualHost *:443>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerName ex.kr
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html


        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

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

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

        SSLCertificateFile /etc/letsencrypt/live/ex.kr/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/ex.kr/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>
</IfModule>
728x90