Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to realize non-routine Mirror Station with Nginx

2025-01-17 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/01 Report--

这篇文章主要介绍Nginx如何实现非套路镜像站,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

前几天发现一个电子书非常棒,但是是 github 上的,总是打不开,而正好我的服务器是在香港的,所以我想做一个镜像。

方案一

做了如下配置:

location ^~ /book-c/{ proxy_pass http://akaedu.github.io/book/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";}

浏览了下,都 ok,但是有几点不太好

如果以后我发现类似的书很好,都要增加一个 nginx 配置。

如果原始网站完全无法访问了,我这边也挂了,不能缓存到我本地服务器。

我想修改网页内容也不太好操作,比如我想加上原作者的版权和原始访问地址说明等。

完全采集过来,我也懒得写脚本去跑,最终走上了下面这段踩坑路。

尝试改进

所以尝试了如下做法

rewrite ^/book-(.*?)/ /index.php?m=Book&a=show&book=$1 last;class BookAction extends Action{ private $uri; public function show(){ $book = $_GET['book']; if (!method_exists($this,$book)){ $this->error404(); } try{ $this->$book(); }catch (Exception $e){ $this->error404(); } } /** * http://akaedu.github.io/book/ */ private function c(){ $baseUrl = "http://akaedu.github.io/book/"; $url = $baseUrl.$this->uri; echo file_get_contents($url); }}

又遇到了一个问题,当我访问 https://mengkang.net/book-c/styles.css 则无法 rewrite 匹配到了。

原因是 nginx 优先匹配了

location ~ .*\.(js|css)?${ expires 12h;}

正则匹配优先级关系:https://www.jb51.net/article/134233.htm

方案二

添加一条

location ~ /book-.*?/{ rewrite ^/book-(.*?)/ /index.php?m=Book&a=show&book=$1 last;}

location ^~ 不支持正则的,所以没法用

采坑小记

如果是使用的 location ~ /book-.*/ ,根据正则就是贪婪模式,那么

https://cache.yisu.com/upload/information/20200622/115/67199.png

匹配到的就是 /book-c/images/ ,也就是说rewrite里面的 $1 就是 c/images ,这样和我们的预期相悖的。

故障:无法匹配到 css 文件

$ wget -S https://mengkang.net/book-c/styles.css -O /dev/null--2018-02-01 13:13:36-- https://mengkang.net/book-c/styles.cssResolving mengkang.net... 203.195.188.207Connecting to mengkang.net|203.195.188.207|:443... connected.HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: nginx Date: Thu, 01 Feb 2018 05:13:38 GMT Content-Type: text/html; charset=UTF-8

所有内容的输出默认都是 text/html ,那么也就是我需要对文件的后缀判断咯。 感觉自己给自己挖坑,不如直接采集得了

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report