はじめに
Movable TypeやWordpressのインポート・エクスポート時のはなしです。
インポート時ファイルをアップロード時、Nginxの413 Request Entity Too Largeが出た。
あれ?apacheで動かしているのに・・なぜNginx・・
どうもPlaskでは、Nginxでproxy経由でapacheに接続する設定になっているよう・・
たぶん、Plaskでphp-fpm とかFastCGI,CGIモードの切り替えがサイト毎にできるのできっとその兼ね合いかな・・
Plask管理画面で Apache & nginx 設定ってあるのでなんでかなと思っていたのですが・・
解決方法
nginxのclient_max_body_sizeを変更をすればよいとわかったので
Pleskで該当ドメインで、 Apache & nginx 設定でnginx 追加ディレクティブ で
client_max_body_size 500m;
とか
server {
client_max_body_size 500m
}
やってみたがだめで
Plaskサイトで下記の設定を直接変える方法があったので
SSHでログインして、下記のディレクトリーにあるnginx.confを修正する。
/var/www/vhosts/system/あなたのドメイン/conf/nginx.conf
client_max_body_sizeの値を実際アップロードするファイルサイズ+アルファして設定します。
plesk12では128Mになっていました。
2か所あったので筆者は2か所とも修正しました。
nginx.confイメージ
server {
なにか・・
client_max_body_size 128m;
なにか・・
}
上記の128mを筆者のファイルは450mぐらいだったので500mにして
Plask管理のサービスでnginxを再起動しました。
できましたーー
ただ、手動でnginx.conf修正しても、pleskで設定し直すと元に戻ります。。
Plesk Obsidian 18でやってみた。
413 Request Entity Too Large
nginx
上記が出たので前回同様 下記を修正
/var/www/vhosts/system/あなたのドメイン/conf/nginx.conf
client_max_body_size 128m;
インポート初めて40秒ぐらいして
申し訳ございません。このページに到達できませんhttps://xxxxxxx の Web ページに問題が発生しているか、新しい Web アドレスに完全に移動された可能性があります。
ERR_HTTP2_PROTOCOL_ERROR
とか
502 Bad Gateway
nginx
エラーログは
proxy_error_log
*1 upstream prematurely closed connection while reading response header from upstream,
error_log
(32)Broken pipe: [client xxx.xxx.xxx.1:57252] AH02651: Error writing request body to script
(104)Connection reset by peer: [client xxx.xxx.xxx.1:57252] AH00574: ap_content_length_filter: apr_bucket_read() failed,
Apache & nginx 設定のApache 追加ディレクティブ
HTTP 用追加ディレクティブ
HTTPS 用追加ディレクティブ
FcgidBusyTimeout 300
FcgidIOTimeout 250
fastcgiもオフしてみたり。。
Pleskで該当ドメインで、 Apache & nginx 設定でnginx 追加ディレクティブ で
proxy_read_timeout 300;
など追加してみたが変わらず・・
Pleskでツールと設定で
MPM モード EventからPreFork変更して動作した。。
Pleskでツールと設定→Apache ウェブサーバ→Apache モジュール
MPM モード PreFork
動いた・・うーむ。よくわからん・・・
あとこちらの設定は仮想サイト全体に影響するので、インポート完了後はもとに戻したほうがいいのかな・・
Movable Typeが動かない
ちなみにMovable TypeのCGIを動作させるには
Apache & nginx 設定のApache 追加ディレクティブ
HTTP 用追加ディレクティブ
HTTPS 用追加ディレクティブ
SSL利用かどうかでどちらかに。下記を記載するとMovable Typeが動作します。
AddHandler cgi-script .cgi
さいごに
Plaskは便利なんですけど、規模の小さいなものとか静的データとかにした方がいいですね。
新規導入時は楽ですけど。引っ越しとかデータが大きくなるものはデフォルトが128Mなので使用できないですね。
追記
Apache & nginx 設定でnginx 追加ディレクティブでclient_max_body_size が設定できない件は Pleskサイトに記載があり、
直接nginx.conf設定を変更しなくてもよい方法がありました。Plesk内部の問題の様で2021年10月現在時点の回避策です。アップデートで修正予定らしいです。
Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/domain.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed
方法
/usr/local/psa/admin/conf/panel.iniに記述を追加します。筆者の環境では、存在しなかったので新規作成しました。
nginxClientMaxBodySizeの値を設定しない定義です。
[webserver]
nginxClientMaxBodySize =
追記した内容を反映させる。
plesk sbin httpdmng --reconfigure-all
NGINX を再起動する pleskからでも問題ありませんでした。
service nginx restart
Apache & nginx 設定でnginx 追加ディレクティブで追加します。
client_max_body_size 600m
こちらで対応することにより、pleskで変更しても元に戻りません。。