提供: すだちWiki
移動先: 案内検索

バーチャルホスト・リバースプロキシの設定(CentOS7)

メインページ > CentOS 7 で自宅サーバー構築  > バーチャルホスト・リバースプロキシの設定(CentOS7)

apacheでリバースプロキシを導入した。
リバースプロキシとは, 特定のサーバへの要求を必ず経由するように設定されたプロキシサーバのことである。
今回は, 1つのグローバルIPで複数のWebサーバを公開するために設定した。
リバースプロキシは外部からのパケットをLAN内部でアクセスされたドメインごとにアクセスさせるサーバを変える。
今回は, apacheのリバースプロキシ機能を用いることにした。
また, バーチャルホストを用いることでドメインごとにアクセスするサーバを変更する。

  • apacheは導入済みで、メインホスト用バーチャルホスト設定は完了済みとする。
  • ホスト名、IPアドレスは自宅サーバーの環境に置き換えること。
  • 転送元、転送策の両方にサーバー証明書が必要です。

リバースプロキシの設定を行うドメインの設定

バーチャルホスト設定ファイル作成

ここで, ProxyPass*の設定で最後に”/”をつけておかないと、そこからのリンクのパスがおかしくなり移動できないので注意。

[root@host3 ~]# vi /etc/httpd/conf.d/virtualhost-awajp.com.conf
## 作成:2017-05-13 修正:2017-05-25
<Directory "/var/www/virtualhost/awajp.com" >
    AllowOverride All
</Directory>

<IfModule mod_proxy.c>
    #フォワードプロキシ機能の無効化
    ProxyRequests Off
    #リバースプロキシなので制限をしない。
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    #プロキシ経由であることをヘッダに記述しない
    ProxyVia Off                                                                                  
    # プロキシリクエストに、受け付けた Host HTTP ヘッダを使う
    ProxyPreserveHost On

    <VirtualHost *:80>
        DocumentRoot "/var/www/virtualhost/awajp.com"
        ServerName awajp.com:80 ← 追加ホストサーバー名を指定
        ErrorLog logs/awajp.com-error_log ← 追加ホスト用エラーログファイル名を指定
        CustomLog logs/awajp.com-access_log combined env=!no_log ← 追加ホスト用アクセスログファイル名を指定
        Alias /awstatsreport /var/www/virtualhost/awstatsreport/awajp.com

        # awstats awstatsicons awstatsreport へのリクエストはプロキシしない
        ProxyPass /awstats/ ! 
        ProxyPass /awstatsicons/ !
        ProxyPass /awstatsreport/ !

        ProxyPass / http://192.168.1.4:80/  ← 転送先追加
        ProxyPassReverse / http://awajp.com:80/  ← 転送先追加
        ProxyPassReverseCookieDomain 192.168.1.4 awajp.com  ← 追加
        ProxyPassReverseCookiePath / /  ← 追加
    </VirtualHost>

    <VirtualHost *:443>
        DocumentRoot "/var/www/virtualhost/awajp.com"
        ServerName awajp:443 ← 追加ホストサーバー名を指定
        ErrorLog logs/awajp.com-ssl_error_log ← 追加ホスト用SSLエラーログファイル名を指定
        CustomLog logs/awajp.com-access_log combined env=!no_log ← 追加ホスト用アクセスログファイル名を指定
        Alias /awstatsreport /var/www/virtualhost/awstatsreport/awajp.com

        ## SSL Engine Switch:
        ## Enable/Disable SSL for this virtual host.
        SSLEngine on
        SSLProxyEngine on  ← 追加
        SSLProxyCheckPeerCN off  ← 追加(証明書の確認をスキップ)
        SSLProxyCheckPeerName off  ← 追加(証明書の確認をスキップ)

        RequestHeader set X_FORWARDED_PROTO 'https'

        # awstats awstatsicons awstatsreport へのリクエストはプロキシしない
        ProxyPass /awstats/ !
        ProxyPass /awstatsicons/ !
        ProxyPass /awstatsreport/ ! 

        ProxyPass / https://192.168.1.4:443/  ← 転送先追加
        ProxyPassReverse / https://awajp.com:443/  ← 転送先追加
        ProxyPassReverseCookieDomain 192.168.1.4 awajp.com  ← 追加
        ProxyPassReverseCookiePath / /  ← 追加

        ## SSL Protocol support:
        # SSLv2、SSLv3を無効化する
        SSLProtocol All -SSLv2 -SSLv3

        ## SSL Cipher Suite:
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

        ## Speed-optimized SSL Cipher configuration:
        SSLHonorCipherOrder on 
        SSLCipherSuite  ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

        ## Server Certificate:
        SSLCertificateFile /etc/letsencrypt/live/mail.sudachi.jp/cert.pem ← 追加ホスト用公開鍵を指定

        ## Server Private Key:
        SSLCertificateKeyFile /etc/letsencrypt/live/mail.sudachi.jp/privkey.pem ← 追加ホスト用秘密鍵を指定

        ## Server Certificate Chain:
        SSLCertificateChainFile /etc/letsencrypt/live/mail.sudachi.jp/chain.pem ← 追加ホスト用中間証明書を指定

        ## SSL Protocol Adjustments:
        BrowserMatch "MSIE [2-5]" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

        Header always set Strict-Transport-Security "max-age=15768000"
    </VirtualHost>
</IfModule>

Webサーバー再起動

「httpd.conf」の文法チェック

[root@host3 ~]# apachectl configtest
Syntax OK

Webサーバー再起動

[root@host3 ~]# systemctl restart httpd

動作確認

[root@host3 ~]# systemctl status httpd
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running)  since 土 2017-05-06 13:45:58 JST; 46s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 29305 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 29311 (httpd)
   Status: "Total requests: 9; Current requests/sec: 0.111; Current traffic: 1.3KB/sec"
   CGroup: /system.slice/httpd.service
           ├─29311 /usr/sbin/httpd -DFOREGROUND
           ├─29312 /usr/sbin/httpd -DFOREGROUND
           ├─29313 /usr/sbin/httpd -DFOREGROUND
           ├─29314 /usr/sbin/httpd -DFOREGROUND
           ├─29315 /usr/sbin/httpd -DFOREGROUND
           ├─29316 /usr/sbin/httpd -DFOREGROUND
           ├─29317 /usr/sbin/httpd -DFOREGROUND
           ├─29318 /usr/sbin/httpd -DFOREGROUND
           ├─29322 /usr/sbin/httpd -DFOREGROUND
           ├─29323 /usr/sbin/httpd -DFOREGROUND
           └─29324 /usr/sbin/httpd -DFOREGROUND

 5月 06 13:45:57 host3.sudachi.jp systemd[1]: Starting The Apache HTTP Server...
 5月 06 13:45:58 host3.sudachi.jp systemd[1]: Started The Apache HTTP Server.