ご質問失礼します。
本番環境での記事投稿時にエラーが発生し、解決できずにいる状況ですのでご教授していただきたいです。
#環境
開発環境
ruby 2.6.5
rails 6.0.3
mysql 8.0.2
docker
docker-compose
本番環境
webサーバー nginx
アプリケーションサーバー puma
AWS VPC/EC2/RDS/ALB/S3/ACM/Route53
#聞きたいこと
本番環境でのpostメソッド実行時に起きる
クロスサイト認定されるエラー解決したい
HTTP Origin header (https://sdf-app-portforio.com) didn't match request.base_url (http://sdf-app-portforio.com)
#エラー発生状況
本番環境へ変更点を反映させるためデプロイを行った後,アプリケーションへアクセス後、記事の投稿ボタンを押すとエラーが発生しました。
変更点はpost周りの変更を行っておりません。
それ以前までしっかりと投稿できていました。
#エラーコード
Parameters: {"authenticity_token"=>"HkmUSYSIiNngo6PqXumA30mT8thVLJ6QAG/mCn5NyCF/2UnQqUfg2kH9s0ptjGMiLYbPIzRbLsKP+J3kGCVaNg==", "article"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x00007f4e44a27a58 @tempfile=#<Tempfile:/tmp/RackMultipart20210411-27818-183ny7d.jpg>, @original_filename="C704-01.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"article[image]\"; filename=\"C704-01.jpg\"\r\nContent-Type: image/jpeg\r\n">, "object"=>"手袋", "price"=>"8000円", "store"=>"札幌駐屯地", "category_id"=>"81", "tag_ids"=>["", "186", "187", "188"], "rate"=>"3", "content"=>"薄手なので軽作業する時に使えると思います"}, "commit"=>"投稿する"} W, [2021-04-11T01:04:02.901492 #27818] WARN -- : [013cb256-14f3-4c82-a2c2-22e73db9d173] HTTP Origin header (https://sdf-app-portforio.com) didn't match request.base_url (http://sdf-app-portforio.com) I, [2021-04-11T01:04:02.901801 #27818] INFO -- : [013cb256-14f3-4c82-a2c2-22e73db9d173] Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 0.0ms | Allocations: 165) F, [2021-04-11T01:04:02.902462 #27818] FATAL -- : [013cb256-14f3-4c82-a2c2-22e73db9d173] [013cb256-14f3-4c82-a2c2-22e73db9d173] ActionController::InvalidAut henticityToken (ActionController::InvalidAuthenticityToken):
#試したこと、調べたところ
以下の記事で
リンク内容
リンク内容
エラーの原因は
ELBまではhttpsアクセス
ELBとnginxはhttpアクセスになっている。
ユーザーがアクセスするのはhttpsなのにrailsアプリ側にはhttpでアクセスしていると
情報が伝わってしまい、ここで矛盾が生じるためクロスサイト認定され
エラーが起きてしまっていると理解しました。
その上で
EC2にssh接続を行い、nginx.confを以下のように書き換えましたがエラーが解決できずにいる状況です
/etc/nginx/nginx.conf
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. 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; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; #以下追加 location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass http://sdf-app-portforio.com; } #ここまで # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2; # listen [::]:443 ssl http2; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
と記述し
sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
sudo service nginx restart
を行い、nginx.confの記述のミスなどはないことを確認しました。
ですが、エラーが解決できていない状態です
お忙しいと思いますがご教授していただきたいです。
よろしくお願いします。
あなたの回答
tips
プレビュー