Nginx应用中的一些实际需求解决方案
2010-04-01 20:30
288 查看
1.URL重定向
1.1 域名泛解析,如需要把http://wo500.com、a.wo500.com、b.wo500.com、c.wo500.com等一切不是以www开始的都跳转(301重定向)到www.wo500.com上,则可在nginx的配置文件中(具体的某个站点的nginx配置文件中更好)加上如下一段话:
1.2.网站运营一段时间后,有这样一个需求就出来了如:http://www.wo500.com/Down/1.html、http://www.wo500.com/Down/2.html、http://www.wo500.com/Down/3.html等等有无数个这样的静态页面文件(后台自动生成的)。。这是原来的下载页面.但现在由于某种原因,需要把这些大量的静态文件迁移到站点下的另一个目录结构下(即是说网站后台的页面生成目标地址发生了改变),但此时由于搜索引擎大量的抓取了网站上的这些静态文件,如果我们把原来的删了(Down/1.html),直接改用新的目录结构存放(Down/1/index.html),则请求URL地址就变成了http://www.wo500.com/Down/1/(index.html可省略),此时如果从搜索引擎过来的用户访问(由于搜索引擎要删除404不存在的收录页面需要很长的一段时间)的URL则还是原来的URL(http://www.wo500.com/Down/1.html),好了,长篇大论也这么多了,既然有问题,那么就需要我们去解决它不是吗?还是它----301重定向。规则:
http://www.wo500.com/Down/1.html ---> http://www.wo500.com/Down/1/ http://www.wo500.com/Down/2.html ---> http://www.wo500.com/Down/2/ http://www.wo500.com/Down/3.html ---> http://www.wo500.com/Down/3/ http://www.wo500.com/Down/4.html ---> http://www.wo500.com/Down/4/ http://www.wo500.com/Down/5.html ---> http://www.wo500.com/Down/5/
。。。。。。。
明白了吧,也就是说当用户请求http://www.wo500.com/Down/1.html这类URL的时候,则Nginx就要发起一个重定向把该URL重定向到http://www.wo500.com/Down/1/。其实只需要一句代码就可解决这个问题,谁叫有万能正则表达式呢。
1.3 不多作理论的知识解释了.
需求:http://abc201004-03x32768.wo500.com(201004:年月,03:日,32768:文章ID,abc - x为固定值),其中不同的文章所对应的年月日与文章ID都是会变化的.现网站因需求调整要把原来所对应的这个URL地址调转成http://www.wo500.com/u/201004/03-32768.html.为了对搜索引擎机器人作良好的SEO,所以还是要用301重定向:
2.解决Nginx后端服务器(tomcat等)不能得到客户端真实IP的问题
此时在后端服务器可用httpServletRequest.getHeader("X-Real-IP")来得到客户端的真实IP.
3、隐藏Ngfinx版本号
#隐藏NGINX版本号#
server_tokens off;
[b]4、Nginx映射Servlet
[/b]
1.1 域名泛解析,如需要把http://wo500.com、a.wo500.com、b.wo500.com、c.wo500.com等一切不是以www开始的都跳转(301重定向)到www.wo500.com上,则可在nginx的配置文件中(具体的某个站点的nginx配置文件中更好)加上如下一段话:
#设置301重定向(益于搜索引擎) if ($host != 'www.wo500.com') { rewrite ^/(.*)$ http://www.wo500.com/$1 permanent; }
1.2.网站运营一段时间后,有这样一个需求就出来了如:http://www.wo500.com/Down/1.html、http://www.wo500.com/Down/2.html、http://www.wo500.com/Down/3.html等等有无数个这样的静态页面文件(后台自动生成的)。。这是原来的下载页面.但现在由于某种原因,需要把这些大量的静态文件迁移到站点下的另一个目录结构下(即是说网站后台的页面生成目标地址发生了改变),但此时由于搜索引擎大量的抓取了网站上的这些静态文件,如果我们把原来的删了(Down/1.html),直接改用新的目录结构存放(Down/1/index.html),则请求URL地址就变成了http://www.wo500.com/Down/1/(index.html可省略),此时如果从搜索引擎过来的用户访问(由于搜索引擎要删除404不存在的收录页面需要很长的一段时间)的URL则还是原来的URL(http://www.wo500.com/Down/1.html),好了,长篇大论也这么多了,既然有问题,那么就需要我们去解决它不是吗?还是它----301重定向。规则:
http://www.wo500.com/Down/1.html ---> http://www.wo500.com/Down/1/ http://www.wo500.com/Down/2.html ---> http://www.wo500.com/Down/2/ http://www.wo500.com/Down/3.html ---> http://www.wo500.com/Down/3/ http://www.wo500.com/Down/4.html ---> http://www.wo500.com/Down/4/ http://www.wo500.com/Down/5.html ---> http://www.wo500.com/Down/5/
。。。。。。。
明白了吧,也就是说当用户请求http://www.wo500.com/Down/1.html这类URL的时候,则Nginx就要发起一个重定向把该URL重定向到http://www.wo500.com/Down/1/。其实只需要一句代码就可解决这个问题,谁叫有万能正则表达式呢。
rewrite ^/Down/(/d+)/.html /Down/$1/ permanent;
1.3 不多作理论的知识解释了.
需求:http://abc201004-03x32768.wo500.com(201004:年月,03:日,32768:文章ID,abc - x为固定值),其中不同的文章所对应的年月日与文章ID都是会变化的.现网站因需求调整要把原来所对应的这个URL地址调转成http://www.wo500.com/u/201004/03-32768.html.为了对搜索引擎机器人作良好的SEO,所以还是要用301重定向:
server { listen 80 default; server_name *.wo500.com; #http://abc201004-03x32768.wo500.com/ #http://www.wo500.com/u/201004/03-32768.html if ($http_host ~* "^abc(.*)-(.*)x(.*)/.wo500/.com$") { set $a $1; set $b $2; set $c $3; rewrite ^(.*) http://www.wo500.com/u/$a/$b-$c.html permanent; } }
2.解决Nginx后端服务器(tomcat等)不能得到客户端真实IP的问题
location ~ (/.do)|(/.ejf)$ { proxy_pass http://www.wo500.com:4955; #把客户端真实IP传递给后端服务器 proxy_set_header X-Real-IP $remote_addr; }
// Nginx传过来的真实IP tring ip = ActionContext.getContext().getRequest().getHeader("X-Real-IP"); if (ip == null || "".equals(ip)) ip = ActionContext.getContext().getRequest().getRemoteAddr();
此时在后端服务器可用httpServletRequest.getHeader("X-Real-IP")来得到客户端的真实IP.
3、隐藏Ngfinx版本号
#隐藏NGINX版本号#
server_tokens off;
[b]4、Nginx映射Servlet
[/b]
location ^~/servlets/* { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }
相关文章推荐
- 关于一些nginx的高级扩展应用 推荐
- WF工作流与管理类应用系统工作流需求实现的一些误区
- 细谈Slick(5)- 学习体会和将来实际应用的一些想法
- 一些计算机理论在实际生产中的应用
- Android应用中使用Fragment组件的一些问题及解决方案总结
- WF工作流与管理类应用系统工作流需求实现的一些误区
- 细谈Slick(5)- 学习体会和将来实际应用的一些想法
- 关于一些css技巧实际应用扩展
- 应用 Python 解决一些实际问题
- nginx和apache实际应用中的核心区别
- 策略模式在需求重构中的实际应用
- WF工作流与管理类应用系统工作流需求实现的一些误区
- 基于具体需求的URL辅助法实际应用深入研究
- Oracle的管道函数(Pipelined)为实际工作中的商业应用提供高效的数据解决方案
- fcgi+nginx部署django应用的一些记录
- log4j在实际开发中应用场合的一些"潜规则"
- 一些关于HTML与CSS的总结与实际应用
- 动态口令设计系列一续:实际应用场景中对动态口令的一些误解
- Java实际项目中应用的一些技巧(不断更新)
- import-csv 一些实际应用