【问题标题】:Nginx error logNginx 错误日志
【发布时间】:2015-03-11 17:09:40
【问题描述】:

我有一个 Digital Ocean droplet,其中包含我的 Meteor 应用程序,但我在我的 /var/log/nginx 日志中不断收到此错误:

2015/03/11 12:58:46 [error] 2114#0: *423 "/usr/share/nginx/www/index.html" is not found (2: No such file or directory), client: 199.223.125.109, server: nickeleres.com, request$

我的应用程序不需要入口点;除此之外,我不知道这个指令在我的配置中来自哪里。我遵循本指南:

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-meteor-js-application-on-ubuntu-14-04-with-nginx

我什至从/etc/nginx/sites-available/nickeleres 中注释掉了这些行:

#root /usr/share/nginx/html; # root is irrelevant
#index index.html index.htm; # this is also irrelevant

有人能指出正确的方向吗?

编辑我的 nginx 配置

           server_tokens off; # for security-by-obscurity: stop displaying nginx version

            # this section is needed to proxy web-socket connections
            map $http_upgrade $connection_upgrade {
                default upgrade;
                ''      close;
            }

            # HTTP
            server {
                listen 80 default_server; # if this is not a default server, remove "default_server"
                listen [::]:80 default_server ipv6only=on;

                #root /home/nickeleres; # root is irrelevant
                #index /home/nickeleres; # this is also irrelevant

                server_name nickeleres.com; # the domain on which we want to host the application. Since we set "default_server" previously, nginx will answer all hosts anyway.

                # redirect non-SSL to SSL
                location / {
                    rewrite     ^ https://$server_name$request_uri? permanent;
                }
            }

            # HTTPS server
            server {
                listen 443 ssl spdy; # we enable SPDY here
                server_name nickeleres.com; # this domain must match Common Name (CN) in the SSL certificate

                #root /home/nickeleres; # irrelevant
                #index /home/nickeleres; # irrelevant

                ssl_certificate /etc/nginx/ssl/nickeleres.pem; # full path to SSL certificate and CA certificate concatenated together
                ssl_certificate_key /etc/nginx/ssl/nickeleres.key; # full path to SSL key

                # performance enhancement for SSL
                ssl_stapling on;
                ssl_session_cache shared:SSL:10m;
                ssl_session_timeout 5m;

                # safety enhancement to SSL: make sure we actually use a safe cipher
                ssl_prefer_server_ciphers on;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-E$

                # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
                 # to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
                add_header Strict-Transport-Security "max-age=31536000;";

                # If your application is not compatible with IE <= 10, this will redirect visitors to a page advising a browser update
                # This works because IE 11 does not present itself as MSIE anymore
                if ($http_user_agent ~ "MSIE" ) {
                    return 303 https://browser-update.org/update.html;
                }

                # pass all requests to Meteor
                location / {
                    proxy_pass http://127.0.0.1:8080;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade; # allow websockets
                    proxy_set_header Connection $connection_upgrade;
                    proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP

                    # this setting allows the browser to cache the application in a way compatible with Meteor
                    # on every applicaiton update the name of CSS and JS file is different, so they can be cache infinitely (here: 30 days)
                    # the root path (/) MUST NOT be cached
                    if ($uri != '/') {
                        expires 30d;
                    }
                }

【问题讨论】:

  • 添加到原帖中
  • 浏览器请求地址是什么?
  • /etc/nginx/sites-enabled/default 还在吗?如果不使用它,请记住删除它,否则您可能有冲突的指令。

标签: linux ubuntu nginx digital-ocean


【解决方案1】:

/usr/share/nginx/www/index.html 是 nginx 在 /etc/nginx/sites-enabled/ 中仍有指向 default 的符号链接时显示的内容。

Nginx 将所有配置文件加载到 /etc/nginx/sites-enabled/ 中,这样可以很容易地为同一服务器上的不同站点进行配置。通常的方法是将这些配置文件存储在 /etc/nginx/sites-available/ 中,并在 /etc/nginx/sites-enabled/ 中放置要加载的符号链接。默认情况下,在 /etc/nginx/sites-available/ 中有一个名为 default 的文件,在 /etc/nginx/sites-enabled/ 中有一个指向它的符号链接,因此未配置的服务器将显示默认的 nginx index.html。

删除 /etc/nginx/sites-enabled/default 将删除符号链接(同时保留实际的配置文件,以备日后需要时使用),防止 nginx 尝试加载 /usr/share/nginx/www/index .html(我猜你已经删除了)。

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2017-07-05
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2018-06-19
    • 2014-06-16
    相关资源
    最近更新 更多