NGINXにパブリックポータル用リバースプロキシを構築する

Stay hungry. Stay foolish. Your time is limited, so don't waste it living someone else's life.

NGINXにパブリックポータル用リバースプロキシを構築する

はじめに

MuleSoftの公開ヘルプに従って、NGINXにパブリックポータル用リバースプロキシーを構築した。
本書は、NGINXのパブリックポータル用リバースプロキシーの設定方法についてのみ説明し、パブリックポータルのカスタムドメインの設定やクッキー同意IDの設定を割愛している。

目次

  1. 自己書名のサーバ証明書を作成する
  2. NGINXをインストールする
  3. HTTPSを設定する
  4. リバースプロキシーを設定する
  5. 確認する

手順

MuleSoftの公式ヘルプに従ってNGINXを設定する。

MuleSoft公式ヘルプ:公開ポータルのバニティドメイン

自己書名のサーバ証明書を作成する

NGINXに設定する自己書名のサーバ証明書を作成する。
ここでは、カスタムドメインはdevelopers.soulofworld.workにしている。
利用される環境に応じて変更する。

// 秘密鍵の作成
$ openssl genrsa -out server.key 2048
// CSRの作成
$ openssl req -utf8 -new -key server.key -out server.csr -subj "/CN=developers.souldofworld.work/OU=Mulesoft Dev/O=SouldofWorld Japan Ltd.,/L=Tokyo City/ST=Tokyo/C=JP"
// サーバ証明書の作成
$ openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 36524

NGINXをインストールする

下記のコマンドを実行しNGINXをインストールする。
※NGINXはルートで起動しないことをお勧めします。

// NGINXのインストール
$ brew install nginx
// NGINXを起動する
$ brew services start nginx

HTTPSを設定する

NGINXをHTTPSプロトコルでアクセスできるように設定します。
作成したサーバ証明書と秘密鍵をSSLフォルダに配置する。
※フォルダやファイルの所有者はユーザにする。

$ mkdir -m 755 /usr/local/var/nginx
$ mkdir -m 755 /usr/local/var/nginx/ssl
$ cp server.key /usr/local/var/nginx/ssl/server.key
$ cp server.crt /usr/local/var/nginx/ssl/server.crt
$ vi /usr/local/etc/nginx/nginx.conf
// [i]キーで編集
// [esc]キー押下後、:wq!を入力して 
// 設定ファイルをリロードする
$ nginx -s reload

作成したサーバ証明書を利用して、NGINXにHTTPSの設定を追加する。

    server {  
        # 初期設定のlisten 8080をコメントアウトする
        # 443番ポートを許可し、SSL機能をONにする
        #listen 8080;
        listen 443 ssl;

        # サーバ証明書を設定する
        ssl_certificate     /usr/local/var/nginx/ssl/server.crt;
        ssl_certificate_key /usr/local/var/nginx/ssl/server.key;
    }

リバースプロキシーを設定する

パブリックポータルにリクエストをリダイレクトするリバースプロキシーを設定する。

        location ~ /(shared|node_modules|icons|exchange/api-console) {
            proxy_set_header X-Forwarded-Host $http_host;
            proxy_set_header X-Forwarded-Path /;

            proxy_pass https://anypoint.mulesoft.com;
        }

        location /callback {
            proxy_set_header X-Forwarded-Host $http_host;
            proxy_set_header X-Forwarded-Path /;

            proxy_pass https://anypoint.mulesoft.com/exchange/portals/<ORGANIZATION_DOMAIN>/callback;
        }

        location / {
            proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Path /;

            proxy_pass https://anypoint.mulesoft.com/exchange/portals/<ORGANIZATION_DOMAIN>/;
        }

修正した設定ファイルをリロードする。

// 設定ファイルをリロードする
$ sudo nginx -s reload

開発時にローカルや特定のNGINXにアクセスしたい場合は、hostsを利用して名前解決する。

sudo vi /private/etc/hosts
# ChromeのNET::ERR_CERT_INVALIDをスキップする隠しコマンド
# エラー画面が表示されている状態で、thisisunsafeと入力すると画面が表示されます。

アクセスログやリダイレクト後のログを設定する。

http {
    // アクセスリクエストのログ出力
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$request_body"';

    access_log  /usr/local/var/log/nginx/nginx_access.log  main;
}

確認する

ブラウザでNGINXにアクセスして、パブリックポータルのコンテンツが表示されることを確認する。

さいごに

いかがだったでしょうか?
コピペで簡単に検証環境が構築できるようにコマンドを載せました。
ぜひ、試してみてください。では!

 

コメントを残す