Docker HUBにあるjwilder/nginx-proxyで構築したリバースプロキシでは2MBを超えるファイルはデフォルトではアップロードできないようです。しかしそのような制限があるとコンテンツ構築に支障があるのでアップロードサイズ上限を変更しました。その手順を公開します。
jwilder/nginx-proxyでのリバースプロキシ構築はこちらを参照ください。
1.現象
リバースプロキシの転送先ホストで運用しているWordpresでテーマファイルのアップロードに失敗しました。サイズは12MB程度。php.iniの設定は15MBとしているのでクリアしています。ホストのnginx設定ファイルでも「client_max_body_size 100M;」に設定しており問題はないはずです。
Nginxでは以下のエラーが発生していました。
「413 Request Entity Too Large」
2.原因
調査したところやはり、「client_max_body_size」の問題らしい。リバースプロキシ側でデフォルトのままなのではと推測し設定ファイルを確認。
やはりdefault.confに「client_max_body_size」の設定はありませんでした。
3.対処
jwilder/nginx-proxyのnginx設定ファイルは「/etc/conf.d/default.conf」です。この設定ファイルはコンテナが占有し随時設定を書き換えるので手を加えることはできません。
そこで、新たに設定ファイルを作成しそこに「client_max_body_size 100M;」を追加。
volumes指定でコンテナにマウントすることにしました。
(1)YMLファイル
変更したリバースプロキシ用YMLファイルは以下の通りです。12行目でserver.confファイルのマウントを追加しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
version: '2' services: proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /etc/docker-compose.d/certs:/etc/nginx/certs + - ./server.conf:/etc/nginx/conf.d/server.conf logging: driver: syslog restart: always networks: default: external: name: common_link |
(2)server.conf
追加したのは以下の1行です。
1 |
client_max_body_size 100M; |
(3)再起動
再起動をして上記設定ファイルの修正をjwilder/nginx-proxyに反映させます。rvproxyにcdして以下のコマンドを実行します。
1 2 |
# docker-compose down # docker-compose up -d |
これで転送先ホストのwordpressで12MBのテーマファイルもアップロードできるようになりました。