nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2495字,纯文字阅读大概需要4分钟。
内容图文
![nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.](/upload/InfoBanner/zyjiaocheng/971/55524d089e64416e981c77c77bd541fb.jpg)
最近在做一个前后端分离的个人博客,在做自己博客的时候有个想法,本来是打算用nginx作为静态文件服务器使用,django做后端程序.
我的前端页面用vue写的,结果用组件用嗨了,发现页面列表和 详情都是通过切换组件实现的,这样很省代码,但是为了实现下面这种效果的时候遇到了问题:
我要访问url: http://www.liushx.com/artical/123456.html
返回同一页面(artical.html 或者 detail.html , 具体内容通过api获取, 123456.html就是携带请求数据的),但是要带上123456.html,这个数据是文章详情的id,必须提供.
那么问题来了,如何实现nginx在处理这个路径的时候去提供我的那个通用文件呢?
简单说明我的文件结构:
ht@ht-PC:~$ pwd /home/ht ht@ht-PC:~$ tree nginx-pages nginx-pages ├── index.html └── pages ├── artical.html └── detail.html 1 directory, 3 files
按照现在网上的所有可以找到的方法,我需要把我的url路径设定为 /pages/artical.html
但是这显然不符合我的需求,我希望的路径是: /art/123456.html 响应 /pages/artical.html ; /novel/123456.html 响应 /pages/detail.html ;
虽然找不到这种类型的资料,但是我相信nginx 是很牛逼的,他们的大佬工程师必定提供这种简单的需求了.
这种需求在后端实现起来很简单,我感觉通过nginx实现的话,思路八成就是跳转,可惜的是通过 proxy_pass 的方式行不通, nginx会把文件名拼起来,结果就是跳转之后,nginx会去寻找一个 /pages/artical.html123456.html 的神奇文件,然后骄傲的向我报错.
然后我去查看下官方文档,发现一个有意思的函数 rewrite, re开头的函数....嗯........差不多就是她了!
官方文档上对rewrite的说明:
rewrite regex replacement flag
理解了意思之后立马去尝试, O 了个大 K,跑通了!!!!!
下面提供关键代码:
nginx.conf
server_name localhost; root /home/ht/nginx-pages; location / { index index.html; } location ~* ^/art/\d*\.html$ { rewrite ^(/art/.*)$ /pages/artical.html break; root /home/ht/nginx-pages; index pages/artical.html; } location ~* ^/novel/\d*\.html$ { rewrite ^/novel/.*$ /pages/detail.html break; root /home/ht/nginx-pages; index pages/detail.html; }
简单来讲,就是把拿到的路径重新写,换成另一个路径去尝试查找文件,好像nginx提供这个函数是为了容错的,殊途同归嘛,我拿来满足我的需求也好啊.
这个函数提供的效果简直堪称优秀 !
因为nginx只是内部改写了这个路径,返回给浏览器的还是用户请求的路径 !
我的html
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <h1>index</h1> </body> </html>
artical.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>artical</title> </head> <body> <h1>artical</h1> </body> </html>
detail.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>detail</title> </head> <body> <h1>detail</h1> </body> </html>
运行成功后浏览器的效果:
嗯嗯,圆满了...
内容总结
以上是互联网集市为您收集整理的nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.全部内容,希望文章能够帮你解决nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。