【问题标题】:Error "Request failed with status code 404"错误“请求失败,状态码 404”
【发布时间】:2019-10-12 21:01:24
【问题描述】:

我正在 NGINX+MYSQL+PHP Ubuntu 18.04 服务器上运行“通用”Nuxt 项目。一些页面使用 Axios 从数据库(由 PHP 创建的 JSON 文件)中获取数据。该项目在开发和生产模式下运行良好。服务器使用 nginx 作为反向代理 (localhost:3000 -> localhost:80)。

但是在我安装了 HTTPS 和 SSL 证书(DigitalOcean 手册:How To Secure Nginx with Let's Encrypt on Ubuntu 18.04)之后,服务器开始在生产模式下显示错误:

 ERROR  Request failed with status code 404                                                                

  at createError (node_modules/axios/lib/core/createError.js:16:15)
  at settle (node_modules/axios/lib/core/settle.js:18:12)
  at IncomingMessage.handleStreamEnd (node_modules/axios/lib/adapters/http.js:201:11)
  at IncomingMessage.emit (events.js:194:15)
  at IncomingMessage.EventEmitter.emit (domain.js:441:20)
  at endReadableNT (_stream_readable.js:1125:12)
  at process._tickCallback (internal/process/next_tick.js:63:19)

我尝试了来自 Nuxt 官方网站的 nginx 配置示例。但错误不断出现。

我的配置文件 /etc/nginx/site-available/web_site.com

map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    root /var/www/html;
    server_name web_site.com www.web_site.com;
    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/web_site.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/web_site.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location /basemysql {
    auth_basic "Admin Login";
        auth_basic_user_file /etc/nginx/pma_pass;
    }

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
}

server {
    if ($host = www.web_site.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = web_site.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        server_name web_site.com www.web_site.com;
    return 404; # managed by Certbot

}

在您尝试重新加载之前,该应用程序功能齐全。每次我尝试重新加载任何具有 Axios 的页面时都会出现错误。

【问题讨论】:

    标签: json nginx https axios nuxt.js


    【解决方案1】:

    我发现了问题。从 HTTP 重定向到 HTTPS 导致错误。 我删除了这些配置,它工作正常。

    server {
        if ($host = www.web_site.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
        if ($host = web_site.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
            listen 80 default_server;
            listen [::]:80 default_server ipv6only=on;
            server_name web_site.com www.web_site.com;
        return 404; # managed by Certbot
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2019-03-05
      • 2021-04-10
      • 2023-01-21
      相关资源
      最近更新 更多