[ Client ] -- wan -- [ GCP ] -- vpn -- [CDSLVM (WordPress) 192.168.201.51 ] 上記の様な配置でWordPressを構築する。 このesaではGCP上のリバースプロキシの設定を行う。

変更前のnginx設定ファイル(一部)

gsvc.conf
server {
    server_name gsvc.tak-cslab.org;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html; 

    access_log  /var/log/nginx/access.gsvc.log;

    include /etc/nginx/common-oauth2.conf;
    location / {
        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-Email $email;
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/gsvc.tak-cslab.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/gsvc.tak-cslab.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

変更後のnginx設定ファイル(一部)

gsvc.conf
server {
    server_name gsvc.tak-cslab.org;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html; 

    access_log  /var/log/nginx/access.gsvc.log;

    include /etc/nginx/common-oauth2.conf;
    location / {
        proxy_pass http://192.168.201.51/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;

        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-Email $email;
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/gsvc.tak-cslab.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/gsvc.tak-cslab.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
以下の内容を設定ファイルに追加した。
gsvc.conf
        proxy_pass http://192.168.201.51/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;

アクセス時のエラー

リバースプロキシの設定を行ったサーバへブラウザへアクセスすると、WordPressの駆動しているサーバへリダイレクトが行われ、以下のようなエラーが表示される。 スクリーンショット 2021-11-02 11.42.55.png (516.6 kB)

URL設定の変更

手順1

2.WordPressのお引越し」に記載したSearch-Replace-DBを使用し、サイトURLの置換を行う。 SearchReplaceのsearch for に://駆動サーバURL、replace withに://GCP上のURLを記述する。 | | 例 | | ---- | ---- | | search for | ://192.168.201.51 | | replace with | ://gsvc.tak-cslab.org |

手順2

リバースプロキシを行ったサーバがHTTPSで通信する場合、以下の置換も行う。 SearchReplaceのsearch for にhttp://GCP上のURL、replace withにhttps://GCP上のURLを記述する。 | | 例 | | ---- | ---- | | search for | http://gsvc.tak-cslab.org | | replace with | https://gsvc.tak-cslab.org |

確認

ブラウザのキャッシュが残っている場合、リダイレクトされる可能性があるので
シークレットタブで表示を確認する。 スクリーンショット 2021-11-02 12.37.16.png (2.5 MB)

リダイレクトが発生し、アクセスできない場合

wp-adminなどの管理画面にアクセスする際に、以下のようなエラーが表示される事ある。 スクリーンショット 2021-11-02 13.12.24.png (371.1 kB) この症状が発生した場合、WordPressの設定ファイルwp-config.phpに以下の内容を追加する。

wp-config.php
  /* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
  define('FORCE_SSL_ADMIN', true);
  if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
      $_SERVER['HTTPS']='on';
  }
  /* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
一度、シークレットタブを閉じ、再度アクセスするとサイトを閲覧できるようになる。