<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>树莓派 on Colinx Blog</title>
    
    
    
    <link>/tags/%E6%A0%91%E8%8E%93%E6%B4%BE/</link>
    <description>Recent content in 树莓派 on Colinx Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 10 Mar 2020 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="/tags/%E6%A0%91%E8%8E%93%E6%B4%BE/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>坑爹的阿里云 &amp; Swap 的重要性</title>
      <link>/posts/%E6%A0%91%E8%8E%93%E6%B4%BE-apache2-%E8%AE%BE%E7%BD%AE%E7%89%B9%E5%AE%9A%E5%9F%9F%E5%90%8D%E8%BD%AC%E5%8F%91%E5%88%B0%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3/</link>
      <pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate>
      
      <guid>/posts/%E6%A0%91%E8%8E%93%E6%B4%BE-apache2-%E8%AE%BE%E7%BD%AE%E7%89%B9%E5%AE%9A%E5%9F%9F%E5%90%8D%E8%BD%AC%E5%8F%91%E5%88%B0%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3/</guid>
      <description>
        
          
          
          
        
        
        &lt;p&gt;随着树莓派上部署的项目越来越多，每次使用 &lt;strong&gt;IP + 端口&lt;/strong&gt;访问也越来越不方便。考虑使用 Apache 来特定子域名跳转到不同端口对应的不同应用。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;树莓派 3B+  Raspbian 系统&lt;/li&gt;
&lt;li&gt;Apache2&lt;/li&gt;
&lt;li&gt;自己的域名&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在 Apache2 的配置文件（路径 /etc/Apache2/Apache2.conf ) 文件末尾加上以下配置：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
  ServerName YOUR_DOMAIN.COM #此处为本条规则绑定的域名，下同
  ServerAlias YOUR_DOMAIN.COM
  ProxyPreserveHost On
  ProxyRequests Off
  ProxyPass / http://localhost:8080/ #修改此处的端口号为实际所需，下同
  ProxyPassReverse / http://localhost:8080/
&amp;lt;/VirtualHost&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;之后开启 Apache2 的相关模块&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;a2enmod rewrite
a2enmod proxy
a2enmod proxy_http


&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;最后重启 Apache2 即可 sudo systemctl restart Apache2&lt;/p&gt;

        
        </description>
    </item>
    
    <item>
      <title>一次成功的网络优化 &amp; 吐槽国内糟糕的网络环境</title>
      <link>/posts/%E4%B8%80%E6%AC%A1%E6%88%90%E5%8A%9F%E7%9A%84%E7%BD%91%E7%BB%9C%E4%BC%98%E5%8C%96-%E5%90%90%E6%A7%BD%E5%9B%BD%E5%86%85%E7%B3%9F%E7%B3%95%E7%9A%84%E7%BD%91%E7%BB%9C%E7%8E%AF%E5%A2%83/</link>
      <pubDate>Thu, 10 Oct 2019 00:00:00 +0000</pubDate>
      
      <guid>/posts/%E4%B8%80%E6%AC%A1%E6%88%90%E5%8A%9F%E7%9A%84%E7%BD%91%E7%BB%9C%E4%BC%98%E5%8C%96-%E5%90%90%E6%A7%BD%E5%9B%BD%E5%86%85%E7%B3%9F%E7%B3%95%E7%9A%84%E7%BD%91%E7%BB%9C%E7%8E%AF%E5%A2%83/</guid>
      <description>
        
          
          
          
        
        
        &lt;p&gt;在内网的树莓派上部署了 AdGuardHome，做 DNS 服务器的同时，也可以为内网所有设备过滤广告。本来嘛拦截了广告理应网络加载会更快，然而实际体验却很糟糕。网页加载要比之前慢得多。AdGuardHome 的面板显示的平均反应时间一度达到了 1000ms。1s 的延时还是会非常影响网络体验的。用 dig 命令看了下 DNS 查询的情况。不看不知道一看吓一跳，随便查询一个域名竟然废了四秒多！这怎么能忍受！&lt;/p&gt;

&lt;p&gt;[图片已丢失]
&lt;!-- ![](http://192.168.1.200/wp-content/uploads/2019/12/image-1-1280x784.png) --&gt;&lt;/p&gt;

&lt;p&gt;看网上其他人的评价，并没有我这种龟速的情况。况且我的上游 DNS 已经更换为了国内几个大厂的 DNS 比如阿里的腾讯的，测试查询一般反应时间也才 50ms。本地这个结果肯定是不能接受的。最开始还想过要根据常用域名手动制作 hosts 直接重定向。但是 dnspython 这个库不好直接指定 dns 查询，adguardhome 的 query 日志又经过特殊加密，这条路困难重重。决定将其作为备用方案。接下来进入漫长的排雷环节。&lt;/p&gt;

&lt;p&gt;首先考虑上游 DNS 中设置了谷歌等国外的 DNS，某些情况下会比国内的 DNS 慢。但是即便只留了一个阿里的 DNS，反应速度还是在秒级。&lt;/p&gt;

&lt;p&gt;接下来定位过滤器，开了五六个过滤器，按理说查询 DNS 前会先读取本地的过滤器以寻找匹配项，过滤规则一多自然会反应迟钝。禁用了一个默认的 30k 条规则的配置，速度有那么一点提升，但还是在 1s 以上，完全不能接收。这跟平时用阿里 DNS 差了几个数量级啊。&lt;/p&gt;

&lt;p&gt;后来发现了这货：&lt;/p&gt;

&lt;p&gt;[图片已丢失]&lt;/p&gt;

&lt;!-- ![](http://192.168.1.200/wp-content/uploads/2019/12/image-1280x191.png) --&gt;

&lt;p&gt;原来，他会把每次查询的域名先交给他服务器做安全性检查，这在国内的互联网环境中完全是鸡肋，而且因为每次都要连接境外服务器，其延迟可想而知。果然禁用了这一项，速度嗖嗖的就起来了：&lt;/p&gt;

&lt;!-- ![](http://192.168.1.200/wp-content/uploads/2019/12/image-2-1280x708.png) --&gt;

&lt;p&gt;[图片已丢失]&lt;/p&gt;

&lt;p&gt;即便是冷门的实验室官网的域名，也在 100ms 内解决了，对于常见的热门网站由于多设备频繁访问，会直接查询本地缓存。虽然基本只有可怜的差不多 60s 的缓存时间，但是一旦命中，就可以在 &amp;lt; 10ms 的时间响应。如果是过滤器中的域名，更是可以达到 &amp;lt; 5ms。终于，这个 AdGuard Home DNS 可以正式投入使用了。&lt;/p&gt;

        
        </description>
    </item>
    
  </channel>
</rss>