是这样的,因为有些地方用到了 google fonts,但是呢,As we know……
后来突然想到 nginx 是可以做反向代理的,于是便试了试,然后成功了0w0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
upstream fonts_google { server fonts.miskcoo.com:80; } upstream fonts_gstatic { server fonts.gstatic.com:80; } server { listen 80; listen [::]:80; server_name fonts.miskcoo.com; access_log /var/log/nginx/fonts_access_log main; valid_referers server_name *.miskcoo.com miskcoo.com; if ($invalid_referer) { return 403; } location /css { sub_filter 'fonts.gstatic.com' 'fonts.miskcoo.com'; sub_filter_once off; sub_filter_types text/css; proxy_pass_header Server; proxy_set_header Host fonts.miskcoo.com; proxy_set_header Accept-Encoding ''; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://fonts_google; } location / { proxy_pass_header Server; proxy_set_header Host fonts.gstatic.com; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://fonts_gstatic; } } |
我来解释一下上面的一些东西
sub_filter 'fonts.gstatic.com' 'fonts.miskcoo.com';
这一行是把返回的所有东西里边的 fonts.gstatic.com 替换成我们自己的域名,要不然你得到了 css 文件,字体内容还是在 google 上面
然后 sub_filter_once off;
是表示全部替换,proxy_set_header Accept-Encoding '';
这要求 google 返回不压缩的内容,因为压缩了就没有办法进行替换了
接着第二个 location /
的配置主要是字体文件的地址,你看看第一个配置返回的 css 就会知道该怎么写了
然后关于 valid_referers server_name *.miskcoo.com miskcoo.com;
是限制只有从这些域名访问才可以(如果你觉得你的流量啥的很多或者想做慈善事业当然就不用了)
然后下面是 HTTPS 的配置方法,你可以直接把端口改成 443,然后加上下面这些东西
1 2 3 |
ssl on; ssl_certificate your_crt.crt; ssl_certificate_key your_key.key; |
至于证书…… 如果你有当然好= =、但是没有的话就自己签发一个(要安装 openssl),运行下面这段就好了
要注意的是,在中间会叫你填一大堆东西,唯一一个重要的是 Common Name,这个写上你的域名,要不然有的浏览器会不认
1 2 3 4 |
openssl genrsa -des3 -out server.key 2048 openssl rsa -in server.key -out server.key # 这是生成没有密码的证书,你刚开始要输入一个四位以上的密码 openssl req -new -key server.key -out server.csr openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt |
之后你把 server.crt 复制到本机,然后导入到浏览器就好了
反向代理架设成功了,但是想通过HTTPS、HTTP两种方式proxy 但是网上很多方法也都试过了,提示404 博主能否发布一下HTTPS方法呢?
我去试试看好了⊙▽⊙ 不过 HTTPS 倒是需要伪造或购买一个证书的Σ(っ °Д °;)っ
你可以直接用 HTTP 的,把端口改成 443 然后加上
至于证书怎么制作,网上有很多教程恩0 0
好了现在更新了0w0
0.0搞定了,3Q~