360°网站管家_运维学院_提供最新最全的服务器运维视频教程与网站维护视频教程

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
1 2 3 4
查看: 3167|回复: 0
打印 上一主题 下一主题

Nginx配置中使用error_page指令

[复制链接]

823

主题

909

帖子

4623

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4623
跳转到指定楼层
楼主
发表于 2015-10-13 14:18:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

亲!这问题您也搜索很久了吧?不如咨询下我们吧


613049616  613049616  613049616   613049616   613049616


博客刚开不久,访问流量正在稳步上升,可是,从昨天开始,从搜索引擎带来的流量骤降,让我百思不得其解,使用google网站管理员工具诊断后发现,虽然网页返回了正确的内容,但是HTTP中始终响应的 404 代码,仔细分析后得出的结论是nginxerror_page配置出了问题!
由于小站用的是nginx+apache的构建方式,apache放在后端处理php文件,nginx处理html、图片的静态文件。简单配置如下:

location / {
index index.php index.html;
error_page 404 @proxy;
}
location @proxy {
proxy_pass http://localhost:8080;
#8080端口放置apache服务器
}
....
#静态文件的配置就省略了

思路很简单,如果在定位符”/”下找不到文件将把文件代理给apache处理。这种处理方式,乍看下没有问题,我在浏览器下也能正常浏览网页,不过,nginx默认会给一个404代码给浏览器,这对蜘蛛的访问是致命的。明白这点后处理就很简单了。
将 error_page 404 @proxy; 改成 try_files $uri @proxy; 问题就解决了。

root /path/www/$host;
location / {
index index.php index.html;
proxy_pass http://localhost:8080;
}
location ~* \.(html|htm)$ {
try_file $uri @proxy;
}
location ~* \.(jpg|gif|png|zip|js|css)$ {
expires 30d;
gzip on;
gzip_min_length  1024;
gzip_types       text/plain application/x-javascript text/css application/xml;

}
location @proxy {
proxy_pass http://localhost:8080;
#8080端口放置apache服务器
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则


Archiver|手机版|小黑屋|360wzgj Inc. 百度统计

GMT+8, 2024-11-1 10:39 , Processed in 0.069698 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表