トラフィック削減用 Proxy サーバを作ってみた

iPhone7 を導入してから、トラフィックが増大している気がしてきた。
むしろ増大している。

■適当に調べてみた
一日当たり、今までより倍近くトラフィック流れてる・・・。
特に、ブラウザのトラフィックが増えてるっぽいな・・・。
トラフィックの内訳は大体こんな感じ。

  • ブラウザ:5割
  • Twitter:3割
  • テザリング:2割8分
  • Skype:1分
  • 他:のこり

うーむこれはいけない。とてもいけない。何とかしなければ。

■何とかする案
・画像読み込まなくする
 →ないわー。
・ブラウザ起動しなくする
 →ないわー。
・画像の質を下げるプロキシ通す
 →コレだ―。

■構成図

【現在】
[Sophos (UTM)]<->{Squid (Route Switch)]<->{Apache httpd (Cache Server)]
【新構成】
[Sophos (UTM)]<->{Squid (Route Switch)]<->{Apache httpd (Cache Server)]<->[Apache httpd (Deflate Server)]

要は、Apache httpd のリバースプロキシ部に、Deflate 用の新しいバーチャルホストを追加するだけの簡単な内容。
なお、今回手を入れるサーバはコレ
【Squid + ClamAV + Apache でゲートウェイ型ウイルス検索プロキシサーバ作ってみた】

■設定は次の通り

# yum install /usr/bin/convert
# vi /etc/httpd/conf.d/deflate_proxy.conf
Listen 8081

<VirtualHost *:8081>
    <IfModule mod_deflate.c>
        DeflateCompressionLevel 9
        DeflateFilterNote Ratio ratio
        LogFormat "%h %l %u %t \"%r\" %>s %b (%{ratio}n%%)" common_deflate
    </IfModule>

    ServerAdmin root@cielnotron.sgv417.dip.jp
    DocumentRoot /var/www/html
    ServerName cielnotron.sgv417.dip.jp:8081
    ErrorLog logs/deflate_proxy-error_log
    CustomLog logs/deflate_proxy-access_log common_deflate

    KeepAlive On
    MaxKeepAliveRequests 1024
    KeepAliveTimeout 300

    ProxyRemote * http://127.0.0.1:8080/
    <IfModule mod_proxy.c>
        ProxyRequests On

        <Proxy *>
            Order deny,allow
            Deny from all
            Allow from 192.168.24.

            AddDefaultCharset Off
            SetOutputFilter DEFLATE
        </Proxy>

        <IfModule mod_ext_filter.c>
            ExtFilterDefine jpeg-filter mode=output cmd="/usr/bin/convert -quality 50 jpeg:- jpeg:-"
#            ExtFilterDefine png-filter mode=output cmd="/usr/bin/convert -colors 16 -colorspace Transparent -quality 90? +dither +profile \"*\" png:- png:-"
#            ExtFilterDefine png-filter mode=output cmd="/usr/bin/convert -colors 16 -colorspace Transparent +dither +profile \"*\" png:- png:-"
            <ProxyMatch \.(jpe?g|JPE?G)$>
                SetOutputFilter jpeg-filter
            </ProxyMatch>
#            <ProxyMatch \.(png|PNG)$>
#                SetOutputFilter png-filter
#            </ProxyMatch>
        </IfModule>
    </IfModule>
</VirtualHost>

■補足

  • JPEGもっと削減できるんじゃ?
  • →これより劣化させると、iPhone 7 Plus で見たとき、画像の粗さが目に見えてわかるように。
  • PNGはなぜ無効化?
  • →どうもPNGのフォーマットによっては、正常に出なくなる場合があるっぽい。その為一旦無効化。そのうちなんとかする。予定。予定。
  • ほかの画像形式の対応は?
  • →いらんよね?実際んところ。
  • 動画広告とかは?
  • →プロキシサーバ内蔵のDNSでブロックしてる。
  • プライベートIPしか許可してないじゃん
  • →L2TPでVPN張った後使うようにしてます。ただ、iOS のVPNがちょっと不安定な気がするので、直接外に出しちゃおうかと検討中。
カテゴリー: めも パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です