web-dev-qa-db-ja.com

Nginx、Thin、Railsの構成。静的ページにはアクセスできますが、動的にはアクセスできません

私はnginx(以下のnginx.conf)とthinをセットアップしました。 nginxとthin(2サーバー)の両方が実行されています(実行されていることを確認しました)。 Rails index.htmlなどのパブリックディレクトリにある静的ページにアクセスできますが、他のURLを入力すると、nginxによって生成された500ページが表示されます。「申し訳ありませんが、何か私が間違っていることについての助けはありがたいです。Railsアプリケーションにアクセスできるようにしたいと思います。

http {
include   /etc/nginx/mime.types;
default_type  application/octet-stream;

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;

#keepalive_timeout  0;
keepalive_timeout 30;

#gzip  on;

# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;

#Rails app config here
upstream Backend  {
      server 127.0.0.1:3000;
      server 127.0.0.1:3001;
}

server {
       listen   80;
       server_name www.domain.com;
       rewrite ^/(.*) http://domain.com permanent;
}


server {
        listen   80;
                    server_name domain.com;

        access_log /applications/RailsApp/log/access.log;
        error_log /applications/RailsApp/log/error.log;

        root /applications/RailsApp/public;
        # index  index.html;

        location / {
                      proxy_set_header  X-Real-IP  $remote_addr;
                      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                      proxy_set_header Host $http_Host;
                      proxy_redirect off;

                      if (-f $request_filename/index.html) {
                                       rewrite (.*) $1/index.html break;
                      }

                      if (-f $request_filename.html) {
                                       rewrite (.*) $1.html break;
                      }

                      if (!-f $request_filename) {
                                       proxy_pass http://Backend;
                                       break;
                      }
        }

 }

}

これは、domain.comを除いて、まさに私のnginx.confであり、実際のドメインのプレースホルダーです。

3
Skill M2

エラーがRailsであり、nginxまたはthinではないことに気付いた後、私のRailsアプリケーションでlog/production.logをチェックすることで、問題はかなり迅速に解決されました。I 2つの問題がありました。

まず、config /database.ymlの本番データベースのソケットが正しくありませんでした。間違ったソケットtmp/mysql.sockから、実際にシステム上にあるソケット、var/lib/mysql /mysql.sockに変更する必要がありました。

この後、cssファイルがプリコンパイルされていないという別のエラーがlog /production.logにありました。これは、config/environment/production.rbを編集し、「config.assets.compile = false」を「config.assets.compile = true」に変更することで修正されました。

1
Skill M2