質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2506閲覧

Railsのフォームで長い文字列をPOSTできない

masuto

総合スコア11

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2018/06/13 10:29

編集2018/06/14 06:04

RailsでフォームやDBなどの機能を一通り実装して、簡単なブログサービスを作りました。
しかし、いざ用意したフォームから投稿しようとしたところ、ある程度短い文字列では正常に動くのですが、少しでも長くなると「We're sorry, but something went wrong.」と表示され機能しなくなってしまいます。
文字数としては650文字以上からエラーが吐かれるようです。ユーザーIDやタイトルなどの各種パラメータに加えて、markdownの本文、markdownをhtmlにパースした状態の本文をまとめてPOSTしています。

環境

  • Rails 5.2.0
  • nginx 1.12.2
  • unicorn 5.4.0

ログの内容

nginxとunicorn側は特にエラーは吐いていないようでした。
以下Railsのログです。

正常時
Started GET "/dashboard/edit" for xxx.xxx.xxx.xxx at 2018-06-13 18:43:45 +0900 Processing by DashboardController#edit as HTML --- SQL --- ↳ app/controllers/application_controller.rb:7 Rendering XXXXXXXX Rendered XXXXXXXX Completed 200 OK in 39ms (Views: 32.4ms | ActiveRecord: 0.9ms) Started POST "/dashboard/edit/submit" for 175.184.118.251 at 2018-06-13 18:44:49 +0900 Processing by DashboardController#edit_submit as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXXX", "title"=>"XXXX", "content"=>"XXXX", "uid"=>"XXXX", "content_html"=>"<p>XXXX</p>\r\n"} --- SQL --- ↳ app/controllers/application_controller.rb:7 --- SQL --- ↳ app/controllers/dashboard_controller.rb:23 --- SQL(INSERT) --- ↳ app/controllers/dashboard_controller.rb:23 Redirected to XXXXXXX.XXX Completed 302 Found in 65ms (ActiveRecord: 18.6ms) Started GET "/dashboard" for XXX.XXX.XXX.XXX at 2018-06-13 18:44:45 +0900 Processing by DashboardController#home as HTML --- SQL --- ↳ app/controllers/application_controller.rb:7 Rendering XXXXXXXX Rendered XXXXXXXX Completed 200 OK in 50ms (Views: 39.9ms | ActiveRecord: 2.8ms)
失敗時
Started GET "/dashboard/edit" for xxx.xxx.xxx.xxx at 2018-06-13 18:43:45 +0900 Processing by DashboardController#edit as HTML --- SQL --- ↳ app/controllers/application_controller.rb:7 Rendering XXXXXXXXX Rendered XXXXXXXXX Completed 200 OK in 39ms (Views: 32.4ms | ActiveRecord: 0.9ms) Started GET "/dashboard" for xxx.xxx.xxx.xxx at 2018-06-13 18:44:45 +0900 --- SQL --- ↳ app/controllers/application_controller.rb:7 Rendering XXXXXXXXX Rendered XXXXXXXXX Completed 200 OK in 50ms (Views: 39.9ms | ActiveRecord: 2.8ms)

Railsのエラーログを見る限り、POSTリクエスト自体届いてないようにも思えます。
Rails以前の問題なのでしょうか?最近Railsに触れたばかりで初めて遭遇したバグなので解決への手がかりが掴めません。
何か知っている方がいらっしゃいましたら、ぜひご教授お願い致します。

##追記1

  • 本文を挿入するカラムはtext型に設定しています。

##追記2

  • Rails server で立てた状態では問題なくPOSTが完了し、nginx(SSL済)×unicornで立てた状態だと失敗するということが分かりました。nginxかunicornが悪さをしているのでしょうか...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryochin

2018/06/13 23:55

投稿する、ということはおそらく POST リクエストだと思いますが、GET ではなく POST の(失敗)ログは残っていませんか?
masuto

2018/06/14 05:54

POSTリクエストですが、POSTについての失敗ログは吐いていませんでした。actionの処理にすら達してないみたいです。
guest

回答1

0

自己解決

nginxの

  • client_body_buffer_size
  • large_client_header_buffers

の項目を適切に設定することで解消しました。

投稿2018/06/14 06:16

masuto

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問