nginx错误!找不到您要查找的页面

时间:2016-09-23 08:52:28

标签: ruby-on-rails nginx amazon-ec2 puma

我正在使用AWS EC2与Nginx和Puma构建一个测试应用程序,遵循本教程

https://www.sitepoint.com/deploy-your-rails-app-to-aws/

我也可以使用Capistrano成功部署该应用。 该应用程序也适用于开发。 我在开发和生产中使用Rails 5和Ruby 2.3.1。

目前,我有两页正在开发但尚未投入生产。

使用此网址时的制作

http://ec2-54-226-156-103.compute-1.amazonaws.com/

我正在

This is the default index.html page that is distributed with nginx on the Amazon Linux AMI. It is located in /usr/share/nginx/html.

而不是我的主页。

当我使用此网址时

http://ec2-54-226-156-103.compute-1.amazonaws.com/contacts

我正在

nginx error!
The page you are looking for is not found.
Something has triggered missing webpage on your website. This is the default 404 error page for nginx that is distributed with the Amazon Linux AMI. It is located at /usr/share/nginx/html/404.html
You should customize this error page for your own site or edit the error_page directive in the nginx configuration file /etc/nginx/nginx.conf.

不知道如何解决这个问题。

以下是我的Nginx配置文件。

cat /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 /var/run/nginx.pid;

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 2048;

    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;

    index   index.html index.htm;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  localhost;
    root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        # redirect server error pages to the static page /40x.html
        #
        error_page 404 /404.html;
        location = /40x.html {
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl;
#        listen       [::]:443 ssl;
#        server_name  localhost;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        # It is *strongly* recommended to generate unique DH parameters
#        # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
#        #ssl_dhparam "/etc/pki/nginx/dhparams.pem";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#        ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

cat /etc/nginx/sites-available/default

upstream app {
  # Path to Puma SOCK file, as defined previously
  server unix:/home/deploy/contactbook/shared/tmp/sockets/puma.sock fail_timeout=0;
}

server {
  listen 80;
  server_name localhost;

  root /home/deploy/contactbook/public;

  try_files $uri/index.html $uri @app;

  location / {
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Connection '';
    proxy_pass http://app;
  }

  location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

不知道如何修复这些Nginx设置以使应用程序正常运行并且Nginx从应用程序提供页面?

如果这可能有任何帮助,这里是文件夹/ home / deploy / contactbook / shared中的puma配置文件

cat puma.rb

#!/usr/bin/env puma

directory '/home/deploy/contactbook/current'
rackup "/home/deploy/contactbook/current/config.ru"
environment 'production'

pidfile "/home/deploy/contactbook/shared/tmp/pids/puma.pid"
state_path "/home/deploy/contactbook/shared/tmp/pids/puma.state"
stdout_redirect '/home/deploy/contactbook/shared/log/puma_error.log', '/home/deploy/contactbook/shared/log/puma_access.log', true

threads 0,8

bind 'unix:///home/deploy/contactbook/shared/tmp/sockets/puma.sock'

workers 0

prune_bundler

on_restart do
  puts 'Refreshing Gemfile'
  ENV["BUNDLE_GEMFILE"] = "/home/deploy/contactbook/current/Gemfile"
end

2 个答案:

答案 0 :(得分:1)

问题在于网站可用/默认为server_name localhost;

我的意思是nginx只会将该服务器块用于Host头与“localhost”匹配的请求 对于测试,您可以将其设置为server_name _;,这是全能的。

最终,您需要将其设置为您的网站名称,例如server_name ec2-54-226-156-103.compute-1.amazonaws.com,但这可以等到您拥有域名。

答案 1 :(得分:0)

某些原因导致您网站上的网页丢失。这是随 Red Hat Enterprise Linux 分发的 nginx 的默认 404 错误页面。它位于 /usr/share/nginx/html/404.html

您应该为自己的站点自定义此错误页面或编辑 nginx 配置文件 /etc/nginx/nginx.conf 中的 error_page 指令。

有关 Red Hat Enterprise Linux 的信息,请访问 Red Hat, Inc. 网站。 Red Hat Enterprise Linux 文档可在 Red Hat, Inc. 网站上找到。