リバースプロキシでの Strapi
今回のシチュエーション
フロントエンドはPHPに任せて、バックエンドは何かAPIを使って構築するスタイルが最近多いですが、今回は CodeIgniter + Strapi で構築することになり、プロキシの設定で若干はまった部分もあったので、備忘録を兼ねてまとめておきます。
設定の流れ
Strapiのインストールはすでに終了しているとして、以下の流れでプロキシを設定していきます。インストールは簡単なので、以下のページ等を参考にしてください。localhostではポート1337でStrapiを起動していると想定しています。(PM2でプロセスを管理しています)
リバースプロキシ (OpenLiteSpeed)
Webサーバーでリバースプロキシを設定します。プロキシのプロセッサー名は strapi
としています。 extprocessor
内の maxConns
以下は適宜設定してください。今回は、サブドメインでの運用のため、トップディレクトリ /
にアクセスしてプロキシへ誘導する設定を context
に記述しています。 addDefaultCharset
等は適宜設定してください。
extprocessor strapi {
type proxy
address 127.0.0.1:1337
maxConns 10
pcKeepAliveTimeout 5
initTimeout 5
retryTimeout 0
respBuffer 0
}
context / {
type proxy
handler strapi
addDefaultCharset off
}
セキュリティ関連のエラー対処
上記の設定のままStrapiにアクセスすると、ブラウザでセキュリティヘッダーやCORSに関するエラーが噴き出してきますので、これを修正するために、 config
にある(ハズ)の middleware.js
を以下のように最低限修正します。( <YOUR_HOST_NAME>
は適宜変更してください)
Security Header
module.exports = [
...<中略>...
{
name: 'strapi::security',
config: {
contentSecurityPolicy: {
useDefaults: true,
directives: {
'connect-src': ["'self'", 'http:', 'https:'],
'script-src': ["'self'", "'unsafe-inline'"],
upgradeInsecureRequests: null,
},
},
},
},
...<中略>...
]
CORS
module.exports = [
...<中略>...
{
name: 'strapi::cors',
config: {
enabled: true,
headers: '*',
origin: ['http://localhost:1337', '<YOUR_HOST_NAME>'],
}
},
...<中略>...
]
URLの設定
.env
ファイルを編集して、URL
と PUBLIC_URL
を設定します。以下の例で、<YOUR_HOST_NAME>
は公開URLを、<PATH_TO_STRAPI>
はトップディレクトリであれば省略か公開URLと同じURLで大丈夫ですが、サブディレクトリに置いている場合(例えば api
)、そのサブディレクトリ名を代入します。
URL=<PATH_TO_STRAPI>
PUBLIC_URL=<YOUR_HOST_NAME>
Strapiのビルド
以上の設定が終わったら、忘れずに以下のコマンドでビルドしてStrapiを再起動したら完了です。
$ npm run build