如何配置nginx从代理处理404并且不将404闪存到最终用户的浏览器控制台?

问题描述

我将Nginx用作minio上托管的nuxt.js网站的反向代理。每次我请求任何不存在但由vue路由器描述的路径时,我都会在开发人员控制台中得到404,但该路径正在加载。有办法避免这种行为吗?还是只是正常情况?

我正在寻找类似try_files的指令,该指令可以应用于'minio proxy'块。

我的Nginx配置:

server {
    listen 80;
    server_name 10.8.0.1;

    add_header x-frame-options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    charset utf-8;

    # logging
    access_log /var/log/Nginx/10.8.0.1.access.log;
    error_log /var/log/Nginx/10.8.0.1.error.log warn;

    index index.html;

    error_page 404 /index.html;

    # minio proxy
    location / {
        gzip_static on;
        rewrite ^/$ /minio/index.html break;
        expires 31d;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;

        proxy_pass http://localhost:9000/minio/;
        proxy_intercept_errors on;
    }
}

# Websockets

server {
    listen 6566;
    server_name 10.8.0.1;
    location / {
        proxy_pass http://10.3.0.175:6001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
}

没有文件存储在本地,因此不需要root指令。大概...

minio中的文件被压缩。

我尝试将error_page指令更改为

error_page 404 =200 /index.html

error_page 404 =417 /index.html

但是在这两种情况下,nuxt都不会下载资源(对应的js和css)。

我还尝试了404的命名位置,但是无论如何Nginx都会闪烁404到开发控制台,并且我想避免在配置文件中重复代码。可能有一个更轻松的解决方案。

在此先感谢英语不好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)