博客
关于我
nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求....
阅读量:798 次
发布时间:2023-02-15

本文共 1783 字,大约阅读时间需要 5 分钟。

最近在做一个前后端分离的个人博客,在做自己博客的时候有个想法,本来是打算用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/htht@ht-PC:~$ tree nginx-pagesnginx-pages├── index.html└── pages    ├── artical.html    └── detail.html1 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

    
index

index

artical.html

    
artical

artical

detail.html

    
detail

detail

运行成功后浏览器的效果:

 

嗯嗯,圆满了...

 

转载于:https://www.cnblogs.com/haiton/p/10875938.html

你可能感兴趣的文章
nginx反向代理转发、正则、重写、负摘均衡配置案例
查看>>
Nginx反向代理配置
查看>>
Nginx启动SSL功能,并进行功能优化,你看这个就足够了
查看>>
nginx启动脚本
查看>>
Nginx和Tomcat的区别
查看>>
Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
查看>>
Nginx在Windows下载安装启动与配置前后端请求代理
查看>>
Nginx在开发中常用的基础命令
查看>>
Nginx基础知识点与使用场景梳理
查看>>
Nginx多域名,多证书,多服务配置,实用版
查看>>
nginx如何实现图片防盗链
查看>>
Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理
查看>>
Nginx学习总结(11)——提高Nginx服务器的安全性,稳定性和性能的12种技巧
查看>>
Nginx学习总结(12)——Nginx各项配置总结
查看>>
Nginx学习总结(13)——Nginx 重要知识点回顾
查看>>
Nginx学习总结(14)——Nginx配置参数详细说明与整理
查看>>
Nginx学习总结(15)—— 提升 Web 应用性能的十个步骤
查看>>
Nginx学习总结(1)——Nginx入门简介
查看>>
Nginx学习总结(2)——Nginx手机版和PC电脑版网站配置
查看>>
Nginx学习总结(3)——Nginx配置及应用场景之高级配置
查看>>