レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Nginx をリバースプロキシ(キャッシュ) として使ってみた

2011年6月29日 2015年5月16日
nginx reverse proxy cache

Nginx + php-fpm VPS使 nginx使VPS nginx

nginx使
nginx () + apache () 
nginx () + nginx () 1

リバースプロキシ(Reverse Proxy) または逆プロキシ とは、
特定のサーバへの要求を必ず経由するように設置されたプロキシサーバのことで、一般的なプロキシとは、文字通りの意味あいを持ち、不特定多数のサーバを対象としません。
リバースプロキシは、不特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、 アクセスを制限することにより特定のサーバのセキュリティを高めたりする目的に用いられます。

リバースプロキシ
リバースプロキシサーバーの例
プロキシ
プロキシサーバーの例


上の図は、リバースプロキシサーバーと一般的なプロキシサーバーの違いです。
いずれのプロキシサーバーもインターネットに接続されています。

違いは、インターネットと逆向きの接続先が
  • リバースプロキシサーバー :
    ウェブサーバーなどのサーバー(インターネットサーバー)
  • プロキシサーバー :
    個人のパソコン(インターネットユーザ)
となっていることです。

リバースプロキシサーバーをおくこともメリットは、もちろんキャッシュサーバーとしてのメリットもありますが、 ロードバランサーの機能を使っての以下の図のような負荷分散のイントラネットを構築できることです。
リバースプロキシ2
(reverse proxy server)nginx nginx cache purge 


Nginx  nginx cache purge 使(CentOS/ScientificLinux)

Nginxproxy



nginx FastCGI
Nginxのキャッシュ機能だけを利用したい方は、さらに効率的、高速化が図れる Nginx のFastCGIキャッシュ(fastcgi cache )を使ってみた が参考になるかと思います。


関連記事 :

15 件 コメントがあります。 コメントを投稿する
  1. […] […]

  2. […] […]

  3. […] […]

  4. […] […]

  5. tetuya0703
    2014年2月27日, 2:01 PM




    HP

    Nginxapache(wordpress)
    Nginx,apahce(wordpress)


    Internet(80)Nginx(80)apahce(wordpress)
    Nginxreverse proxycache apache(wordoress)

    Nginxreverse proxyNginxcache
    Nginxcahce

    Nginxcache





    /etc/nginx/nginx.conf
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        tcp_nopush      off;
    
        keepalive_timeout  65;
    
        gzip  on;
        gzip_http_version 1.0;
        gzip_types        text/plain 
                          text/xml 
                          text/css 
                          application/xml 
                          application/xhtml+xml 
                          application/rss+xml 
                          application/atom_xml 
                          application/javascript 
                          application/x-javascript 
                          application/x-httpd-php;
        gzip_disable      "MSIE [1-6]\.";
        gzip_disable      "Mozilla/4";
        gzip_comp_level   2;
        gzip_vary         on;
        gzip_proxied      any;
        gzip_buffers      4 8k;
    
        server_names_hash_bucket_size 128;    #    32/64/128
    
        include /etc/nginx/conf.d/*.conf;
    }
    

    /etc/nginx/conf.d/proxy.conf
    # ヘッダの設定 
    proxy_redirect                          off;
    proxy_set_header Host                   $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    add_header X-Cache $upstream_cache_status;
     
    # タイムアウトの設定                           
    proxy_connect_timeout 60;
    proxy_read_timeout    90;
    proxy_send_timeout    60;
     
    # バッファサイズの設定                          
    proxy_buffering  on;
    proxy_buffer_size       8k;
    proxy_buffers           100 8k;
     
    # キャッシュの設定                              
    proxy_cache_path      /var/cache/nginx/night-walker.asia levels=1:2 keys_zone=cache_night-walker.asia:15m inactive=7d max_size=512m;
    proxy_temp_path       /var/cache/nginx/temp;
     
    proxy_cache_valid     200 2h;
    proxy_cache_valid     302 2h;
    proxy_cache_valid     301 4h;
    proxy_cache_valid     any 1m;
    
    【/etc/nginx/conf.d/virtual.conf】
    upstream backend {
           ip_hash;
           server 172.16.1.5:80;
    }
     
    server {
           listen 80;
           server_name wp01.night-walker.asia;
           proxy_set_header        Host            $host;
           proxy_set_header        X-Real-IP       $remote_addr;
           proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
           access_log  /var/log/nginx/wp01.night-walker.asia/access_log  main;
           error_log  /var/log/nginx/wp01.night-walker.asia/error_log;
    
           if ($http_host = night-walker.asia) {
                rewrite  (.*)  http://wp01.night-walker.asia;
            }
    
           try_files $uri $uri/ /index.php?q=$uri&$args;
    
           location / {
                    set $do_not_cache 0;
    
                    #  -- POST or HEAD ?
                    if ($request_method != "GET") {
                        set $do_not_cache 1;
                    }
    
                    #  -- Login or Comment or Post Editting ?
                    if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) {
                        set $do_not_cache 1;
                    }
    
                    #  -- mobile ?
                    if ($http_x_wap_profile ~ ^[a-z0-9\"]+) {
                        set $do_not_cache 1;
                    }
    
                    #  -- Mobile ?
                    if ($http_profile ~ ^[a-z0-9\"]+) {
                        set $do_not_cache 1;
                    }
    
                    #  -- Kei-tai ?
                    if ($http_user_agent ~ ^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*) {
                        set $do_not_cache 1;
                    }
    
                    #  -- Mobile ?
                    if ($http_user_agent ~ ^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*) {
                        set $do_not_cache 1;
                    }
    
                    #  -- Kei-tai ?
                    if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) {
                        set $do_not_cache 1;
                    }
    
                    #  -- Kei-tai ?
                   if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) {
                       set $do_not_cache 1;
                    }
     
                    proxy_no_cache	$do_not_cache;
                    proxy_cache_bypass	$do_not_cache;
    		resolver 127.0.0.1; 
                    proxy_pass http://$host;
                    proxy_cache_key $scheme://$host$request_uri;
           }
    }
    
  6. 管理人
    2014年2月28日, 4:03 AM

    tetuya0703 




    2nginx使
    $do_not_cache 




    log_format rt_cache '$remote_addr - $upstream_cache_status [$time_local]  '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    

    $upstream_cache_status : HIT



  7. tetuya0703
    2014年3月1日, 12:07 AM

    管理人様

    こんばんは
    tetuya0703です

    ご指導、ありがとうございました
    いただいたアドバイスを元に切りわけを行いました

    最初は単純なcacheサーバーとしての動作をさせる為の設定の設定のみにして
    動作させた所、cacheのデレクトリィーにはcache情報が保存されました

    その後、順番に設定を追加していてわかったのですが、管理人様のサイトで
    wordpress用の設定で

    if ($request_method != "GET") {
                    set $do_not_cache 1;
    }
    

    という記載があるのですが
    良く、サイト情報を確認すると、説明の部分では上記の部分が

    if ($request_method = "POST") {
                    set $do_not_cache 1;
    }
    

    となっていました
    両方ともGET以外の指定だとは思うのですが、!=GETでは

    do_not_cache 1
    

    に設定されてしまい
    X-Cacheがbypassされてしまうようです

    時間があればご確認頂ければと思います

    ご教授ありがとうございました

  8. 管理人
    2014年3月1日, 4:00 AM

    tetuya0703 

    if ($request_method != "GET") {
        set $do_not_cache 1;
    }
    


    if ($request_method = "POST") {
        set $do_not_cache 1;
    }
    

     $do_not_cache 1




    $request_method , $do_not_cache 
  9. tetuya0703
    2014年3月1日, 8:46 PM




    log$request_method , $do_not_cache

    #  -- Login or Comment or Post Editting ?
    if ($http_cookie ~ ^.*(çwordpress_logged_in|wp-postpass_).*$) {
        set $do_not_cache 1;
    }
    

    $do_not_cache1

    $http_cookielogwp01.domain.comwordpressreloadlog
    wp-settings-time-1=1393349537; wp-settings-1=libraryContent%3Dbrowse; comment_author_4116c94503ab7348f3be47beac224a89=test; comment_author_email_4116c94503ab7348f3be47beac224a89=mail_address
    


    comment_author_cachebypassreloadcomment_author_cookiewordpress

    comment_author_$do_not_cache1






  10. tetuya0703
    2014年3月1日, 8:58 PM

    管理人様

    追加で確認してみました
    現状はworddpressの条件のなかで、comment_author_を削除しています
    それで、logの中では$do_not_cacheは0と記録されているのですが

    私のローカル環境から
    curl http://wp01.domain.com –head
    を実行すると

    HTTP/1.1 200 OK
    Server: nginx/1.4.5
    Date: Sat, 01 Mar 2014 11:48:42 GMT
    Content-Type: text/html; charset=UTF-8
    Connection: keep-alive
    Vary: Accept-Encoding
    X-Powered-By: PHP/5.3.3
    X-Cached: Sat, 01 Mar 2014 11:48:42 GMT
    X-Pingback: http://wp01.domain.com/xmlrpc.php
    Last-Modified: Sat, 01 Mar 2014 11:48:42 GMT
    X-Cache: BYPASS
    

    となり、”X-Cache: BYPASS”されてしまいます

    # — POST or HEAD ?
    の条件式を
    $request_method != “GET”
    から
    $request_method = “POST”
    に変更すると
    X-Cache: HIT
    になります
    $do_not_cacheは1以外であれば
    X-Cache: BYPASSされず、HITになるとおもうのですが
    これは、何か他の問題が内在しているのでしょうか

    それとも私のlogの見方が間違っているのでしょうか
    ご教授頂けますと幸いです

  11. 管理人
    2014年3月1日, 10:32 PM

    tetuya0703 




    WordPress




  12. tetuya0703
    2014年3月2日, 5:30 PM

    管理人様

    こんにちは
    ご指導ありがとうございます

    現状の自身の環境を整理してみます
    また、不明点が出たときはご指導をお願い申し上げます

  13. 管理人
    2014年3月4日, 1:49 PM

    tetuya0703 さん
    管理人です。
    コメントありがとうございます。
    またコメントください。
    お仕事なら、いつでもお引き受けしますよ。

  14. Tetuya0703
    2014年3月6日, 8:14 PM




    tetuya0703


     調
    cookiedo_not_cache
    firefoxhttp request headercookie
    comment_authoer
    (Safari.ie)http request headerfirefoxcookierequest


    SafariIE

    nginxcacheproxy_cache_valid 200 2h1m1mcache





  15. 管理人
    2014年3月7日, 12:18 AM

    tetuya0703 












     

コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

Genymotionとは、 公式サイト(http://www.genymotion.com/)には、以下のように記述があります。 G ...

記事を読む...

以下のように Android x86 を仮想マシンへインストールし、色々と試してきました。 仮想マシンを使って Android ...

記事を読む...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

記事を読む...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

記事を読む...

今回は、Mondo Rescue を使って バックアップとリストア(復元)をやってみたいと思います。 いまだに、さくらのVPSは、バッ ...

記事を読む...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


 root ¥685 /    CPU 1(core) 512    CPU 10(core),  32(GB), SSD 800(GB) 
 SSDHDD()
 
OS
 ( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )
 
VPS
  

http://vps.sakura.ad.jp/さくらのVPSのサイトへ   

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。



Serverman@VPS 1 
  Serverman@VPS  



1GB2GBEntry ::490

2MB4GBStandard ::980

4GB8GBPro ::1,980
 

1
 Serverman@VPSIPv60
 
IPv6
 
Serverman@VPS http://dream.jp/vps/ Serverman@VPSのサイトへ  



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


 ConoHa VPS 0  Web API使便VPS
 

 

 
ConoHa VPS
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。



2GB CPU:3coreDisk:200GB  

:1,153 (:1,6800)  

VPS
 1GB / 2Core  ¥834  
 
   
 

 
.com VPS(KVM)
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ

Time : 0.2474 [s]