WordPress、Nginx、リバースプロキシ、プロキシキャッシュ

この記事は約5分で読めます。

Nginx + WordPressで、爆速が期待できる、リバースプロキシ+プロキシキャッシュ。

Nginx とWordPressで、ちょっとした設定が必要です。

「proxy_set_header」関係を設定する必要があります。

Nginx設定

proxy_passにて、Proxyを設定します。

proxy_cacheにて、キャッシュを指定します。

        upstream backend {
           server 127.0.0.1:8010;
        }
        
        server {
                listen       443 ssl http2;
                server_name  (FQDN);
                ssl_certificate     /etc/letsencrypt/live/(FQDN)/fullchain.pem;
                ssl_certificate_key /etc/letsencrypt/live/(FQDN)/privkey.pem;
                ssl_trusted_certificate /etc/letsencrypt/live/(FQDN)/fullchain.pem;

                location / {


                        proxy_set_header Host $http_host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-Proto https;
                        proxy_set_header X-Forwarded-Port 443;
                        proxy_set_header X-Forwarded-Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_redirect http:// https://;

                        proxy_pass http://backend;

                        proxy_cache c_zone;
                        
                        add_header X-Cache-Status $upstream_cache_status;
                }

        }
        
        server {
                listen   8010;

                (略)
             
        
                location ~ \.php$ {
                        root           /var/www/html;
                        fastcgi_pass   127.0.0.1:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                        include        fastcgi_params;
                }
        }

↑設定は、割愛しています。

proxy_set_header
というコマンドで、proxy側へ情報を伝えます。

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http:// https://;

上記の部分が重要

Proxy キャッシュのチェック

本当にキャッシュが効いているのだろうか・・・
こんな疑問がを解消してくれるのが

add_header X-Cache-Status $upstream_cache_status;

という設定。

上記は、Proxyキャッシュが有効に働いているかをチェックするに使います。

# curl https://(アドレス)/ -v

と、「curl」コマンドに、「-v」を付けて、実行してみます。

最初は

X-Cache-Status: MISS

と、出るかもしれません。
これは、「キャッシュにヒットしなかった」

ということです。

もう一度、

# curl https://(アドレス)/ -v

のコマンドを打ちます。
X-Cache-Status: HIT

と、出てきます。キャッシュにヒットした!
と言うことになります。

これで、proxyキャッシュが正常に稼働していることがわかります。

WordPress Nginx Proxy対応

wp-config.phpの最後の方で、

$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';

と、記述します。

SSLが前提の記述です。

これで、問題なく、WordPressが動くはず!

 

タイトルとURLをコピーしました