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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Ruby on Rails 5

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

nginx

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ruby on Rails

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

Q&A

1回答

10865閲覧

Nginxで400 Bad Requestが発生する

soft_admin

総合スコア63

Ruby on Rails 5

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

nginx

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ruby on Rails

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

0グッド

1クリップ

投稿2020/01/29 14:25

railsで作ったアプリの本番環境を設定しています。
webサーバーにnginxを使用しようとしていますが、いざサーバーを起動してアクセスすると、
「404 Bad Request Request Header Or Cookie Too Large」
というエラーがでます。そして、access.logを見てみると、

log

1~ 省略 ~ 2y.y.y.y - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/1.0" 400 ~ 省略 ~ Safari/537.36" "x.x.x.x, y.y.y.y, y.y.y.y, y.y.y.y, y.y.y.y" 3y.y.y.y - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/1.0" 400 ~ 省略 ~ Safari/537.36" "x.x.x.x, y.y.y.y, y.y.y.y, y.y.y.y" 4y.y.y.y - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/1.0" 400 ~ 省略 ~ Safari/537.36" "x.x.x.x, y.y.y.y, y.y.y.y" 5y.y.y.y - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/1.0" 400 ~ 省略 ~ Safari/537.36" "x.x.x.x, y.y.y.y" 6y.y.y.y - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/1.0" 400 ~ 省略 ~ Safari/537.36" "x.x.x.x" 7x.x.x.x - - [29/Jan/2020:20:00:00 +0900] "GET / HTTP/2.0" 400 ~ 省略 ~ Safari/537.36" "-"

※ 「x.x.x.x」...グローバルIPアドレス
※ 「y.y.y.y」...プライベートIPアドレス

というような、おかしなログがでます。多分Request Headerが長すぎるエラーだと思うのですが、対処法が分かりません。
どなたかご教授お願いいたします。

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

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

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

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

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

TaichiYanagiya

2020/01/30 00:01

rewrite か何かの設定で、内部でループしているように見えます。 nginx のバージョン、設定は何でしょうか?
soft_admin

2020/01/30 04:03

バージョンは1.12.2です。 nginxの設定は以下のとおりです。 user user_name; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ’ ‘$status $body_bytes_sent “$http_referer” ’ ‘“$http_user_agent” “$http_x_forwarded_for”’; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log debug; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; upstream rails_app { server unix:home/user_name/rails_app/tmp/sockets/puma.sock; } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name [ドメイン]; root /usr/share/nginx/html; ssl on; ssl_certificate “/etc/nginx/ssl/server.crt”; ssl_certificate_key “/etc/nginx/ssl/server.key”; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; include /etc/nginx/default.d/*.conf; location / { proxy_pass https://[ドメイン]; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
TaichiYanagiya

2020/01/30 05:36

設定情報は質問を編集して、コードブロックにしていただければありがたいです。
guest

回答1

0

下記設定は、自分自身にプロキシしてループします。

proxy_pass https://[ドメイン];

upstream rails_app を定義しているので、そちらにプロキシしたいのではないでしょうか?

upstream rails_app { server unix:/home/user_name/rails_app/tmp/sockets/puma.sock; #←ここは絶対パスにすべきでは? } server { #(抜粋) location / { proxy_pass http://rails_app; } }

投稿2020/01/30 05:41

TaichiYanagiya

総合スコア12202

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問