私は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であり、実際のドメインのプレースホルダーです。
エラーが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」に変更することで修正されました。