現在AWS(EC2)上にDocker+Railsアプリをデプロイしています。
以下のサイトを参考にして404ページのデザインを修正して反映させましたが、デザインが適用されません。
Rails 5の404/500エラーページ、簡単作成手順 | 酒と涙とRubyとRailsと
何度GitHubからpullしてファイルの変更を反映させても、デザインが反映されない理由がnginxが原因かもしれませんが、対処方法が全くわかりません(m_ _m)
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m_ _m)
動作環境
Rails | AWS |
---|---|
Ruby: 2.7.3 | Amazon linux2 |
Rails: 6.0.3.6 | nginx: 1.16.1 |
Devise: 4.7.3 | EC2、RDS(MySQL) |
rails-dotenvを使用 |
困っていること
作成した404ページが反映されない
考えられること
nginxの設定が原因でpublic/404.html
のファイルが反映されない?
試したこと
以下を参考にconfig/environments/development.rb
のconfig.consider_all_requests_local
の値をfalse
にしてlocalで動作確認しましたが自分が変更したデザインが表示されました。
404,500エラー発生時のエラーハンドリング及Slack通知の実装 - Qiita
期待する動作
public/404.html
の自分のコードが反映されること
該当しそうなコード
app/controllers/application_controller.rb(1/3)
ruby
1class ApplicationController < ActionController::Base 2# : 3 if Rails.env.production? 4 rescue_from StandardError, with: :render_500 5 rescue_from ActiveRecord::RecordNotFound, with: :render_404 6 7 def render_404 8 render file: Rails.root.join('public/404.html'), status: :not_found, layout: false, content_type: 'text/html' 9 end 10 11 def render_500(e) 12 logger.error(e.message) 13 logger.error(e.backtrace.join("\n")) 14 render file: Rails.root.join('public/500.html'), status: :internal_server_error, layout: false, content_type: 'text/html' 15 end 16 end 17# : 18end
nginx.conf(2/3)
nginx
1upstream webapp { 2 server unix:///webapp/tmp/sockets/puma.sock; 3} 4 5server { 6 listen 80; 7 server_name 35.76.230.5; 8 9 access_log /var/log/nginx/access.log; 10 error_log /var/log/nginx/error.log; 11 12 root /webapp/public; 13 14 client_max_body_size 100m; 15 error_page 404 /404.html; 16 error_page 505 502 503 504 /500.html; 17 try_files $uri/index.html $uri @webapp; 18 keepalive_timeout 5; 19 20 location @webapp { 21 proxy_set_header X-Real-IP $remote_addr; 22 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 23 proxy_set_header Host $http_host; 24 proxy_pass http://webapp; 25 } 26} 27
docker-compose.yml(3/3)
docker
1 2ARG RUBY_VERSION=2.7.3 3FROM ruby:$RUBY_VERSION 4 5ENV APP_DIR /webapp 6ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE yes 7ENV DEBCONF_NOWARNINGS yes 8ENV LANG C.UTF-8 9ENV MY_BUNDLER_VERSION 2.1.4 10 11RUN mkdir $APP_DIR 12WORKDIR $APP_DIR 13 14# Node.js 15RUN curl -fsSL https://deb.nodesource.com/setup_14.x | bash - \ 16 && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ 17 && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ 18 && apt-get update -qq \ 19 && apt-get install -y --no-install-recommends \ 20 build-essential \ 21 libpq-dev \ 22 vim \ 23 nodejs \ 24 yarn 25 26COPY Gemfile Gemfile.lock /webapp/ 27COPY package.json yarn.lock /webapp/ 28RUN gem install bundler --no-document -v $MY_BUNDLER_VERSION && \ 29 bundle install 30RUN yarn install --production --frozen-lockfile && yarn cache clean 31 32COPY . $APP_DIR 33COPY entrypoint.sh /usr/bin/ 34RUN chmod +x /usr/bin//entrypoint.sh 35ENTRYPOINT [ "entrypoint.sh" ] 36EXPOSE 3000 37 38EXPOSE 3000 39CMD ["rails", "server", "-b", "0.0.0.0"] 40