`
zhengdl126
  • 浏览: 2543208 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

nginx 404会执行302跳转

 
阅读更多

这个问题是应用中比较常见的一个问题了。尤其是对于静态文件,

一般而言在nginx中会利用error_page指令对一些错误吗指定错误页。此时,如果请求命中了改规则,就会跳转的响应的页面。比如:

error_page 400 404 500 'http://xxx.error.html';

上述的命令会导致302或301跳转。

 

一般的网站为了节省流量或者提高响应时间都会对静态文件做缓存,如果服务器返回304状态吗则会请求本地缓存的静态文件。一般而言,静态文件都会有一个Expires首部,表明该文件的过期时间。过期之后,才从服务器请求新资源,否则请求的都是本地缓存。

 

如 果请求一个不存在的静态文件,比如/test.css,此时就会导致error_page指令的跳转。但是要注意的是请求静态文件的请求是完整的,因此, 其中必然包含Expires首部,这就导致,即使已经存在了test.css文件,由于Expires的关系,还是会度本地的缓存,但是本地缓存有没有该 文件,导致请求一致处于302状态。

 

修改的方案就是,采用命令的location对error_page错误页指定的网页进行rewrite:如下所示:

error_page   400 404 @fb;
 
        location @fb {
            rewrite ".*" http://xxx.error.html;
            break;
        }

rewrite为请求的内部跳转(Internal rewrite),并且@fb中并没有设置Expires首部,因此就去掉了原请求中的Expires首部,从而避免前面提到的问题。

分享到:
评论

相关推荐

    nginx的try_file命令实现404跳转_nginx_tryfile404_

    本文将深入探讨`try_files`命令在Nginx中的应用,以及如何利用它来实现404错误页面的自定义跳转。 首先,`try_files`指令的基本语法是: ```nginx try_files file... uri | fallback; ``` 这里的`file...`是一...

    漂亮的404自动跳转页面,网页错误自动跳转

    例如,可以在404页面的JavaScript代码中监听页面加载完成的事件,然后在适当的时间间隔后执行window.location.href改变,将用户重定向到其他页面。同时,还可以添加动画效果或其他交互元素,使用户体验更加友好。 ...

    nginx 伪静态 重定向

    在网站运营过程中,若不实施有效的重定向策略,旧链接(如用户的书签、搜索引擎索引中的URL)将导致404错误页面,这不仅会流失访问流量,还可能损害网站的搜索引擎排名。通过使用Nginx的重定向功能,尤其是301永久...

    nginx 解决首页跳转问题详解

    如果请求的URI是根目录,Nginx会执行内部重写(rewrite),将请求重定向到***/index.html页面。如果条件不成立,则通过proxy_pass指令将请求转发到Tomcat服务器。 ### 301重定向配置 301重定向是HTTP状态码,表示...

    nginx rewrite 实现URL跳转的方法

    Rewrite模块是Nginx提供的一个强大功能,它可以在服务器内部将用户请求的URL按照指定规则进行重写和跳转,达到修改用户访问URL的目的。在配置Nginx时,掌握如何使用Rewrite规则对于实现复杂的URL重写和优化网站的SEO...

    根据ip进行域名跳转

    在实际部署中,这类逻辑可能还会结合使用Web服务器(如Apache、Nginx)的配置文件,通过服务器端配置进行IP判断和重定向,提高效率和安全性。 综上所述,“根据ip进行域名跳转”涉及的知识点主要包括:IP地址与域名...

    nginx压缩包和安装手册

    - **重定向**: 可以配置301或302重定向,实现URL的跳转。 - **URL路由**: 使用location块进行URL匹配,根据匹配规则将请求转发至不同后端服务。 - **访问控制**: 通过allow和deny指令,可以设置IP白名单或黑名单,...

    nginx静态文件缓存的解决方案1

    如果存在缓存,后续请求会直接读取缓存而不执行 `proxy_pass`。 2. 避免使用 `proxy_set_header Host $host`,因为它可能导致缓存失效。 3. 如果 `proxy_pass` 使用 upstream,可以替换为域名或 IP。 ### 第三步:...

    nginx安装包

    - **启动/停止/重启**:使用`sudo /usr/local/nginx/sbin/nginx`启动,`sudo kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)`优雅停止,`sudo /usr/local/nginx/sbin/nginx -s reload`实现平滑重启。...

    Nginx 重写规则教程

    重写规则可以实现从一个location跳转到另一个location,最多允许10次重定向,超过这个次数,Nginx会返回500错误。此外,`set`指令允许创建新的变量并设置它们的值,这对于记录条件标识、传递参数和记录操作行为非常...

    使用OneinStack配置Nginx反向代理、多网站配置、多域名配置

    访问OneinStack官网,选择仅安装Nginx,复制安装命令到服务器执行。示例命令如下: ```bash wget -c ...

    vue前端项目部署之nginx配置.md

    3. **添加重定向规则**:为了处理单页应用的路由问题,避免用户访问非首页URL时出现404错误,可以在server块内添加以下代码: ```nginx try_files $uri $uri/ /index.html?$args; ``` 这行代码的作用是告诉Nginx...

    使用Nginx实现根据 IP 匹配指定 URL

    这是因为在Nginx中,location块对请求的匹配是基于预设的算法进行的,当请求进入location块后,就会根据if指令的判断结果来处理请求,而不是直接执行proxy_pass。 此外,文档中也提到了Nginx配置上的一些技术限制,...

    nginx rewrite常用示例

    #### 三、特定 IP 访问正常,其他 IP 跳转至维护页面 **应用场景:** 进行系统维护时,需要将除特定 IP 外的所有 IP 地址重定向至维护页面。 **配置示例:** ```nginx server { set $rewrite true; if ($remote_...

    Nginx 盛大 第三方软件安全配置规范

    3. **Nginx重定向**:通过修改`nginx.conf`文件,设置所有非`www.shandagames.com`的请求自动跳转至`www.shandagames.com`。 4. **防盗链**:使用Nginx配置防止图片和其他文件类型被热链接,如限制对特定后缀(如gif...

    Nginx配置React项目Url后直接输入路由路径时报404问题的解决

    然而,在部署React应用到服务器时,尤其是使用Nginx作为反向代理服务器时,可能会遇到一个常见的问题:当用户直接在浏览器地址栏输入特定的路由路径(如`http://localhost/demo/page1`)时,服务器返回404错误。...

    nginx 负载均衡与反向代理资源

    3. **启动与停止Nginx**:在命令行中,切换到Nginx安装目录的`sbin`子目录,使用`nginx.exe -t`检查配置文件是否正确,无误后执行`nginx.exe`启动Nginx。要停止服务,使用`nginx.exe -s stop`。 ### 二、Nginx的...

    实例讲解nginx的rewrite规则

    3. **redirect**:返回302临时重定向,浏览器地址栏会显示跳转后的URL地址。 - 示例:`rewrite ^/old/(.*) /new/$1 redirect;` 4. **permanent**:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。 - ...

    nginx-tomcat整合实现JAVA程序负载均衡

    执行`/usr/local/nginx/sbin/nginx`启动Nginx服务。 #### 四、验证负载均衡效果 在浏览器中访问`http://localhost`,如果能够随机地跳转到Tomcat1和Tomcat2上运行的应用页面,则说明负载均衡配置成功。 #### 五、...

    Nginx Rewrite使用场景及代码案例详解

    - `redirect`:返回302临时重定向,浏览器地址栏会显示跳转后的URL地址,爬虫不会更新自己的URL数据库。 - `permanent`:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫会更新自己的URL数据库。 **...

Global site tag (gtag.js) - Google Analytics