【问题标题】:nginx error! The page you are looking for is not foundnginx错误!未找到您要查找的页面
【发布时间】:2017-02-01 01:39:25
【问题描述】:

我正在按照本教程使用 AWS EC2 和 Nginx 和 Puma 构建一个测试应用程序

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

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

目前我有两个页面正在开发中,但没有在生产中工作。

在生产中使用此 URL

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

【问题讨论】:

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


    【解决方案1】:

    问题是站点可用/默认中的server_name localhost;

    我的意思是 nginx 只会使用该服务器块来处理主机标头与“localhost”匹配的请求。
    为了进行测试,您可以将其设置为server_name _;,即包罗万象。

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

    【讨论】:

    • 将服务器名称更改为 server_name _;并得到了同样的错误。
    • 将 server_name 更改为 server_name ec2-54-226-156-103.compute-1.amazonaws.com 也出现了同样的错误。
    • 我对 Nginx 很陌生,但我的直觉告诉我,文件“/etc/nginx/sites-available/default”没有被获取,也没有被使用。实际上文件夹“sites-available”和文件“default”是我创建的,因为 Nginx 安装程序没有创建它们。
    • 文件需要出现在/etc/nginx/sites-enabled才能使用。通常,这是通过在sites-available 中创建文件(如您所做的那样),然后将其符号链接到sites-enabled 来完成的。之后重启 nginx。
    • 我不知道如何创建这样的符号链接。
    【解决方案2】:

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

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

    有关红帽企业 Linux 的信息,请访问红帽公司网站。 Red Hat, Inc. 网站上提供了 Red Hat Enterprise Linux 的文档。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2018-04-22
      • 2019-04-17
      • 2015-11-22
      • 1970-01-01
      • 2017-05-15
      相关资源
      最近更新 更多