<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>影子屋 (文章分类：tor)</title><link>https://blog.bgme.me/</link><description></description><atom:link href="https://blog.bgme.me/categories/tor.xml" rel="self" type="application/rss+xml"></atom:link><language>zh_cn</language><copyright>Contents © 2024 &lt;a href="mailto:i@bgme.me"&gt;无影人&lt;/a&gt; 
&lt;a rel="license noopener nofollow" target="_blank" href="http://creativecommons.org/licenses/by-sa/4.0/" class="ui image" title="如无特别说明，本站文章均遵循 CC BY-SA 4.0 协议，转载请注明作者及出处。"&gt;
&lt;img alt="Creative Commons Attribution-ShareAlike 4.0 International License" src="/license.png"&gt;
&lt;/a&gt;
</copyright><lastBuildDate>Wed, 24 Apr 2024 12:02:13 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>长毛象匿名服务踩坑记</title><link>https://blog.bgme.me/posts/2020/mastodon-hidden-service/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;今天想经自已的实例加上tor匿名服务，自己亲自动手了才发现 Mastodon 官方文档对于tor匿名服务就是一个坑。&lt;/p&gt;
&lt;p&gt;这里假定你已经阅读完官方文档中关于 &lt;a class="reference external" href="https://docs.joinmastodon.org/admin/optional/tor/"&gt;hidden service&lt;/a&gt; 的内容。&lt;/p&gt;
&lt;p&gt;现在让我们把目光放到最后一小节。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gotchas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are a few things you will need to be aware of. Certain redirects will push your users to https. They will have to manually replace the URL with http to continue.&lt;/p&gt;
&lt;p&gt;Various resources, such as images, will still be offered through your regular non-Tor domain. How much of a problem this is will depend greatly on your user’s level of caution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这一小节翻译成中文就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;陷阱&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你需要注意一些事情。某些重定向会将你的用户跳转至https。他们必须手动把URL替换成http才能继续。&lt;/p&gt;
&lt;p&gt;许多的资源，诸如图片，将仍然从常规非Tor域名加载。问题的严重性很大程度上取决于用户的谨慎程度。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;读完真是感觉日了狗了，大兄弟呀！怎么能这样搞呢？刚说到关键地方你就不说了，这怎么能行？&lt;/p&gt;
&lt;p&gt;没办法只有自己踩坑了。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;我接写来的内容，假定你已经完成官方文档所说的设置。我讲解的重点主要是如何解决这此陷阱。&lt;/p&gt;
&lt;section id="tl-dr"&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;所需软件：&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://mitmproxy.org/"&gt;mitmproxy&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;配置文件：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;/etc/nginx/sites-available/c.bgme.bid&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-1" name="rest_code_e7f99064629d4a7abeb8c31215784e96-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-2" name="rest_code_e7f99064629d4a7abeb8c31215784e96-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-3" name="rest_code_e7f99064629d4a7abeb8c31215784e96-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;''&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="s"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-4" name="rest_code_e7f99064629d4a7abeb8c31215784e96-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-4"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-5" name="rest_code_e7f99064629d4a7abeb8c31215784e96-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-6" name="rest_code_e7f99064629d4a7abeb8c31215784e96-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-6"&gt;&lt;/a&gt;&lt;span class="k"&gt;upstream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;backend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-7" name="rest_code_e7f99064629d4a7abeb8c31215784e96-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;fail_timeout=0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-8" name="rest_code_e7f99064629d4a7abeb8c31215784e96-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-8"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-9" name="rest_code_e7f99064629d4a7abeb8c31215784e96-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-10" name="rest_code_e7f99064629d4a7abeb8c31215784e96-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-10"&gt;&lt;/a&gt;&lt;span class="k"&gt;upstream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;streaming&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-11" name="rest_code_e7f99064629d4a7abeb8c31215784e96-11" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;fail_timeout=0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-12" name="rest_code_e7f99064629d4a7abeb8c31215784e96-12" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-12"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-13" name="rest_code_e7f99064629d4a7abeb8c31215784e96-13" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-14" name="rest_code_e7f99064629d4a7abeb8c31215784e96-14" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-14"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_cache_path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/var/cache/nginx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;levels=1:2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;keys_zone=CACHE:10m&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;inactive=7d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max_size=1g&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-15" name="rest_code_e7f99064629d4a7abeb8c31215784e96-15" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-15"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-16" name="rest_code_e7f99064629d4a7abeb8c31215784e96-16" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-16"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-17" name="rest_code_e7f99064629d4a7abeb8c31215784e96-17" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-18" name="rest_code_e7f99064629d4a7abeb8c31215784e96-18" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mastodon.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-19" name="rest_code_e7f99064629d4a7abeb8c31215784e96-19" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/(emoji|packs|system/accounts/avatars|system/media_attachments/files)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-20" name="rest_code_e7f99064629d4a7abeb8c31215784e96-20" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=31536000,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;immutable"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-21" name="rest_code_e7f99064629d4a7abeb8c31215784e96-21" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-22" name="rest_code_e7f99064629d4a7abeb8c31215784e96-22" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-22"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-23" name="rest_code_e7f99064629d4a7abeb8c31215784e96-23" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-24" name="rest_code_e7f99064629d4a7abeb8c31215784e96-24" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-24"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-25" name="rest_code_e7f99064629d4a7abeb8c31215784e96-25" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-25"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-26" name="rest_code_e7f99064629d4a7abeb8c31215784e96-26" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-26"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-27" name="rest_code_e7f99064629d4a7abeb8c31215784e96-27" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-27"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-28" name="rest_code_e7f99064629d4a7abeb8c31215784e96-28" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-29" name="rest_code_e7f99064629d4a7abeb8c31215784e96-29" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-29"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-30" name="rest_code_e7f99064629d4a7abeb8c31215784e96-30" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-30"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-31" name="rest_code_e7f99064629d4a7abeb8c31215784e96-31" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-31"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-32" name="rest_code_e7f99064629d4a7abeb8c31215784e96-32" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-32"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-33" name="rest_code_e7f99064629d4a7abeb8c31215784e96-33" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-33"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://bgme.me/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-34" name="rest_code_e7f99064629d4a7abeb8c31215784e96-34" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-34"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'"streaming_api_base_url":"wss://bgme.me"'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'"streaming_api_base_url":"ws://&lt;/span&gt;&lt;span class="nv"&gt;$host"'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-35" name="rest_code_e7f99064629d4a7abeb8c31215784e96-35" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-35"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-36" name="rest_code_e7f99064629d4a7abeb8c31215784e96-36" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-36"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://img.bgme.bid/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-37" name="rest_code_e7f99064629d4a7abeb8c31215784e96-37" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-37"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_hide_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Content-Security-Policy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-38" name="rest_code_e7f99064629d4a7abeb8c31215784e96-38" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-38"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Content-Security-Policy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"base-uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;default-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;frame-ancestors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;font-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;img-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;style-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'unsafe-inline'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;media-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;frame-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;manifest-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;connect-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://img.bgme.bid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;wss://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;script-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;child-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;worker-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-39" name="rest_code_e7f99064629d4a7abeb8c31215784e96-39" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-39"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter_once&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-40" name="rest_code_e7f99064629d4a7abeb8c31215784e96-40" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-40"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter_types&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-41" name="rest_code_e7f99064629d4a7abeb8c31215784e96-41" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-41"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-42" name="rest_code_e7f99064629d4a7abeb8c31215784e96-42" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-42"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://unix:/tmp/mitm.sock&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-43" name="rest_code_e7f99064629d4a7abeb8c31215784e96-43" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-43"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-44" name="rest_code_e7f99064629d4a7abeb8c31215784e96-44" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-44"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-45" name="rest_code_e7f99064629d4a7abeb8c31215784e96-45" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-45"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-46" name="rest_code_e7f99064629d4a7abeb8c31215784e96-46" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-46"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-47" name="rest_code_e7f99064629d4a7abeb8c31215784e96-47" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-47"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;CACHE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-48" name="rest_code_e7f99064629d4a7abeb8c31215784e96-48" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-48"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;7d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-49" name="rest_code_e7f99064629d4a7abeb8c31215784e96-49" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-49"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;410&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;24h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-50" name="rest_code_e7f99064629d4a7abeb8c31215784e96-50" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-50"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_use_stale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_504&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-51" name="rest_code_e7f99064629d4a7abeb8c31215784e96-51" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-51"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Cached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$upstream_cache_status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-52" name="rest_code_e7f99064629d4a7abeb8c31215784e96-52" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-52"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-53" name="rest_code_e7f99064629d4a7abeb8c31215784e96-53" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-53"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-54" name="rest_code_e7f99064629d4a7abeb8c31215784e96-54" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-54"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-55" name="rest_code_e7f99064629d4a7abeb8c31215784e96-55" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-55"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/api/v1/streaming&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-56" name="rest_code_e7f99064629d4a7abeb8c31215784e96-56" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-56"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-57" name="rest_code_e7f99064629d4a7abeb8c31215784e96-57" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-57"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-58" name="rest_code_e7f99064629d4a7abeb8c31215784e96-58" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-58"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-59" name="rest_code_e7f99064629d4a7abeb8c31215784e96-59" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-59"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-60" name="rest_code_e7f99064629d4a7abeb8c31215784e96-60" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-60"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-61" name="rest_code_e7f99064629d4a7abeb8c31215784e96-61" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-61"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-62" name="rest_code_e7f99064629d4a7abeb8c31215784e96-62" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-62"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://127.0.0.1:8080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-63" name="rest_code_e7f99064629d4a7abeb8c31215784e96-63" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-63"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-64" name="rest_code_e7f99064629d4a7abeb8c31215784e96-64" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-64"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-65" name="rest_code_e7f99064629d4a7abeb8c31215784e96-65" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-65"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-66" name="rest_code_e7f99064629d4a7abeb8c31215784e96-66" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-66"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-67" name="rest_code_e7f99064629d4a7abeb8c31215784e96-67" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-67"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-68" name="rest_code_e7f99064629d4a7abeb8c31215784e96-68" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-68"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-69" name="rest_code_e7f99064629d4a7abeb8c31215784e96-69" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-69"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-70" name="rest_code_e7f99064629d4a7abeb8c31215784e96-70" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-70"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-71" name="rest_code_e7f99064629d4a7abeb8c31215784e96-71" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-71"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;snippets/mastodon.conf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-72" name="rest_code_e7f99064629d4a7abeb8c31215784e96-72" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-72"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-73" name="rest_code_e7f99064629d4a7abeb8c31215784e96-73" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-73"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-74" name="rest_code_e7f99064629d4a7abeb8c31215784e96-74" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-74"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-75" name="rest_code_e7f99064629d4a7abeb8c31215784e96-75" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-75"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s"&gt;unix:/tmp/mitm.sock&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-76" name="rest_code_e7f99064629d4a7abeb8c31215784e96-76" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-76"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gunzip&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-77" name="rest_code_e7f99064629d4a7abeb8c31215784e96-77" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-77"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-78" name="rest_code_e7f99064629d4a7abeb8c31215784e96-78" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-78"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-79" name="rest_code_e7f99064629d4a7abeb8c31215784e96-79" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-79"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-80" name="rest_code_e7f99064629d4a7abeb8c31215784e96-80" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-80"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mastodon.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-81" name="rest_code_e7f99064629d4a7abeb8c31215784e96-81" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-81"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://backend&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-82" name="rest_code_e7f99064629d4a7abeb8c31215784e96-82" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-82"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-83" name="rest_code_e7f99064629d4a7abeb8c31215784e96-83" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-83"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-84" name="rest_code_e7f99064629d4a7abeb8c31215784e96-84" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-84"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-85" name="rest_code_e7f99064629d4a7abeb8c31215784e96-85" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-85"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-86" name="rest_code_e7f99064629d4a7abeb8c31215784e96-86" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-86"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-87" name="rest_code_e7f99064629d4a7abeb8c31215784e96-87" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-87"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-88" name="rest_code_e7f99064629d4a7abeb8c31215784e96-88" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-88"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-89" name="rest_code_e7f99064629d4a7abeb8c31215784e96-89" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-89"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-90" name="rest_code_e7f99064629d4a7abeb8c31215784e96-90" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-90"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mastodon_media&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-91" name="rest_code_e7f99064629d4a7abeb8c31215784e96-91" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-91"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_revalidate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-92" name="rest_code_e7f99064629d4a7abeb8c31215784e96-92" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-92"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-93" name="rest_code_e7f99064629d4a7abeb8c31215784e96-93" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-93"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_use_stale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_504&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-94" name="rest_code_e7f99064629d4a7abeb8c31215784e96-94" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-94"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_background_update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-95" name="rest_code_e7f99064629d4a7abeb8c31215784e96-95" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-95"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_lock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-96" name="rest_code_e7f99064629d4a7abeb8c31215784e96-96" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-96"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;1d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-97" name="rest_code_e7f99064629d4a7abeb8c31215784e96-97" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-97"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;1h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-98" name="rest_code_e7f99064629d4a7abeb8c31215784e96-98" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-98"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_ignore_headers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-99" name="rest_code_e7f99064629d4a7abeb8c31215784e96-99" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-99"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Cached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$upstream_cache_status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-100" name="rest_code_e7f99064629d4a7abeb8c31215784e96-100" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-100"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://s3.us-west-1.wasabisys.com/bgme-mstdn-media/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-101" name="rest_code_e7f99064629d4a7abeb8c31215784e96-101" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-101"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-102" name="rest_code_e7f99064629d4a7abeb8c31215784e96-102" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-102"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-103" name="rest_code_e7f99064629d4a7abeb8c31215784e96-103" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-103"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-104" name="rest_code_e7f99064629d4a7abeb8c31215784e96-104" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-104"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-105" name="rest_code_e7f99064629d4a7abeb8c31215784e96-105" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-105"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-106" name="rest_code_e7f99064629d4a7abeb8c31215784e96-106" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-106"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[::]:80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-107" name="rest_code_e7f99064629d4a7abeb8c31215784e96-107" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-107"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;c.bgme.bid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-108" name="rest_code_e7f99064629d4a7abeb8c31215784e96-108" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-108"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/var/www/public&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-109" name="rest_code_e7f99064629d4a7abeb8c31215784e96-109" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-109"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-110" name="rest_code_e7f99064629d4a7abeb8c31215784e96-110" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-110"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-111" name="rest_code_e7f99064629d4a7abeb8c31215784e96-111" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-111"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-112" name="rest_code_e7f99064629d4a7abeb8c31215784e96-112" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-112"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-113" name="rest_code_e7f99064629d4a7abeb8c31215784e96-113" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-113"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-114" name="rest_code_e7f99064629d4a7abeb8c31215784e96-114" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-114"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[::]:443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-115" name="rest_code_e7f99064629d4a7abeb8c31215784e96-115" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-115"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;c.bgme.bid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-116" name="rest_code_e7f99064629d4a7abeb8c31215784e96-116" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-116"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-117" name="rest_code_e7f99064629d4a7abeb8c31215784e96-117" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-117"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_protocols&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;TLSv1.2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;TLSv1.3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-118" name="rest_code_e7f99064629d4a7abeb8c31215784e96-118" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-118"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-119" name="rest_code_e7f99064629d4a7abeb8c31215784e96-119" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-119"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_prefer_server_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-120" name="rest_code_e7f99064629d4a7abeb8c31215784e96-120" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-120"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_session_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;shared:SSL:10m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-121" name="rest_code_e7f99064629d4a7abeb8c31215784e96-121" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-121"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-122" name="rest_code_e7f99064629d4a7abeb8c31215784e96-122" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-122"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Uncomment these lines once you acquire a certificate:&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-123" name="rest_code_e7f99064629d4a7abeb8c31215784e96-123" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-123"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_certificate&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="s"&gt;/etc/letsencrypt/live/c.bgme.bid/fullchain.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-124" name="rest_code_e7f99064629d4a7abeb8c31215784e96-124" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-124"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_certificate_key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/etc/letsencrypt/live/c.bgme.bid/privkey.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-125" name="rest_code_e7f99064629d4a7abeb8c31215784e96-125" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-125"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-126" name="rest_code_e7f99064629d4a7abeb8c31215784e96-126" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-126"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=31536000"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-127" name="rest_code_e7f99064629d4a7abeb8c31215784e96-127" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-127"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"https://s3.us-west-1.wasabisys.com"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-128" name="rest_code_e7f99064629d4a7abeb8c31215784e96-128" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-128"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/(emoji|packs|system/accounts/avatars|system/media_attachments/files)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-129" name="rest_code_e7f99064629d4a7abeb8c31215784e96-129" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-129"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=31536000,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;immutable"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-130" name="rest_code_e7f99064629d4a7abeb8c31215784e96-130" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-130"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=31536000"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-131" name="rest_code_e7f99064629d4a7abeb8c31215784e96-131" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-131"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-132" name="rest_code_e7f99064629d4a7abeb8c31215784e96-132" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-132"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-133" name="rest_code_e7f99064629d4a7abeb8c31215784e96-133" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-133"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-134" name="rest_code_e7f99064629d4a7abeb8c31215784e96-134" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-134"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-135" name="rest_code_e7f99064629d4a7abeb8c31215784e96-135" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-135"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-136" name="rest_code_e7f99064629d4a7abeb8c31215784e96-136" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-136"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-137" name="rest_code_e7f99064629d4a7abeb8c31215784e96-137" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-137"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-138" name="rest_code_e7f99064629d4a7abeb8c31215784e96-138" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-138"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-139" name="rest_code_e7f99064629d4a7abeb8c31215784e96-139" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-139"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-140" name="rest_code_e7f99064629d4a7abeb8c31215784e96-140" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-140"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-141" name="rest_code_e7f99064629d4a7abeb8c31215784e96-141" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-141"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://backend&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-142" name="rest_code_e7f99064629d4a7abeb8c31215784e96-142" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-142"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-143" name="rest_code_e7f99064629d4a7abeb8c31215784e96-143" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-143"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-144" name="rest_code_e7f99064629d4a7abeb8c31215784e96-144" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-144"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-145" name="rest_code_e7f99064629d4a7abeb8c31215784e96-145" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-145"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-146" name="rest_code_e7f99064629d4a7abeb8c31215784e96-146" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-146"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-147" name="rest_code_e7f99064629d4a7abeb8c31215784e96-147" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-147"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-148" name="rest_code_e7f99064629d4a7abeb8c31215784e96-148" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-148"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;CACHE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-149" name="rest_code_e7f99064629d4a7abeb8c31215784e96-149" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-149"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;7d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-150" name="rest_code_e7f99064629d4a7abeb8c31215784e96-150" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-150"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;410&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;24h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-151" name="rest_code_e7f99064629d4a7abeb8c31215784e96-151" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-151"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_use_stale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_504&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-152" name="rest_code_e7f99064629d4a7abeb8c31215784e96-152" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-152"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Cached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$upstream_cache_status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-153" name="rest_code_e7f99064629d4a7abeb8c31215784e96-153" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-153"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=31536000"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-154" name="rest_code_e7f99064629d4a7abeb8c31215784e96-154" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-154"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-155" name="rest_code_e7f99064629d4a7abeb8c31215784e96-155" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-155"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-156" name="rest_code_e7f99064629d4a7abeb8c31215784e96-156" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-156"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-157" name="rest_code_e7f99064629d4a7abeb8c31215784e96-157" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-157"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/api/v1/streaming&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-158" name="rest_code_e7f99064629d4a7abeb8c31215784e96-158" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-158"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-159" name="rest_code_e7f99064629d4a7abeb8c31215784e96-159" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-159"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-160" name="rest_code_e7f99064629d4a7abeb8c31215784e96-160" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-160"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-161" name="rest_code_e7f99064629d4a7abeb8c31215784e96-161" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-161"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-162" name="rest_code_e7f99064629d4a7abeb8c31215784e96-162" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-162"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-163" name="rest_code_e7f99064629d4a7abeb8c31215784e96-163" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-163"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-164" name="rest_code_e7f99064629d4a7abeb8c31215784e96-164" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-164"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://streaming&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-165" name="rest_code_e7f99064629d4a7abeb8c31215784e96-165" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-165"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-166" name="rest_code_e7f99064629d4a7abeb8c31215784e96-166" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-166"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-167" name="rest_code_e7f99064629d4a7abeb8c31215784e96-167" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-167"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-168" name="rest_code_e7f99064629d4a7abeb8c31215784e96-168" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-168"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-169" name="rest_code_e7f99064629d4a7abeb8c31215784e96-169" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-169"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-170" name="rest_code_e7f99064629d4a7abeb8c31215784e96-170" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-170"&gt;&lt;/a&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-171" name="rest_code_e7f99064629d4a7abeb8c31215784e96-171" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-171"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-172" name="rest_code_e7f99064629d4a7abeb8c31215784e96-172" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-172"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-173" name="rest_code_e7f99064629d4a7abeb8c31215784e96-173" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-173"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;snippets/mastodon.conf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_e7f99064629d4a7abeb8c31215784e96-174" name="rest_code_e7f99064629d4a7abeb8c31215784e96-174" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_e7f99064629d4a7abeb8c31215784e96-174"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;/etc/nginx/snippets/mastodon.conf&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-1" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;keepalive_timeout&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-2" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-2"&gt;&lt;/a&gt;&lt;span class="k"&gt;sendfile&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-3" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;client_max_body_size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-4" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-5" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-5"&gt;&lt;/a&gt;&lt;span class="k"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/var/www/public&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-6" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-7" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-7"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-8" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-8"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_disable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"msie6"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-9" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-9"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_vary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-10" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-10"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_proxied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-11" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-11" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-11"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_comp_level&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-12" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-12" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-12"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_buffers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8k&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-13" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-13" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-13"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-14" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-14" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-14"&gt;&lt;/a&gt;&lt;span class="k"&gt;gzip_types&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/plain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/css&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/javascript&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/xml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/xml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/xml+rss&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/javascript&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-15" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-15" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-15"&gt;&lt;/a&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-16" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-16" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-16"&gt;&lt;/a&gt;&lt;span class="k"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-17" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-17" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-17"&gt;&lt;/a&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-18" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-18" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-18"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-19" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-19" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-20" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-20" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-20"&gt;&lt;/a&gt;&lt;span class="k"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/sw.js&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-21" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-21" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-21"&gt;&lt;/a&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=0"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-22" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-22" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-22"&gt;&lt;/a&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=31536000"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-23" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-23" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-23"&gt;&lt;/a&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-24" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-24" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-24"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-25" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-25" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-25"&gt;&lt;/a&gt;
&lt;a id="rest_code_76a131ac024c460994cc2b2d0b5cbc94-26" name="rest_code_76a131ac024c460994cc2b2d0b5cbc94-26" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_76a131ac024c460994cc2b2d0b5cbc94-26"&gt;&lt;/a&gt;&lt;span class="k"&gt;error_page&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;501&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;504&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/500.html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;/opt/websocket_messages.py&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code python"&gt;&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-1" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-1"&gt;&lt;/a&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-2" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-2"&gt;&lt;/a&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;mitmproxy&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-3" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-3"&gt;&lt;/a&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-4" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-5" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-5"&gt;&lt;/a&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;websocket_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;flow&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-6" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-6"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# get the latest message&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-7" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-7"&gt;&lt;/a&gt;    &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flow&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-8" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-9" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-9"&gt;&lt;/a&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-10" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-10"&gt;&lt;/a&gt;        &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Client sent a message: &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-11" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-11" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-11"&gt;&lt;/a&gt;    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-12" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-12" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-12"&gt;&lt;/a&gt;        &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Server sent a message: &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-13" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-13" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-14" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-14" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-14"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# manipulate the message content&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-15" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-15" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-15"&gt;&lt;/a&gt;    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://img\.bgme\.bid/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'http://img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-16" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-16" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-17" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-17" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-17"&gt;&lt;/a&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s1"&gt;'FOOBAR'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-18" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-18" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-18"&gt;&lt;/a&gt;        &lt;span class="c1"&gt;# kill the message and not send it to the other endpoint&lt;/span&gt;
&lt;a id="rest_code_0a3cf36b3a1c4e17a415f791139ae846-19" name="rest_code_0a3cf36b3a1c4e17a415f791139ae846-19" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_0a3cf36b3a1c4e17a415f791139ae846-19"&gt;&lt;/a&gt;        &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;kill&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;/etc/systemd/system/mitm-mastodon-websocket.service&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-1" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-1"&gt;&lt;/a&gt;[Unit]
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-2" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-2"&gt;&lt;/a&gt;Description=Mastodon Mitm push websocket
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-3" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-3"&gt;&lt;/a&gt;After=network.target
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-4" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-4"&gt;&lt;/a&gt;Wants=network.target
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-5" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-6" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-6"&gt;&lt;/a&gt;[Service]
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-7" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-7"&gt;&lt;/a&gt;Type=simple
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-8" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-8"&gt;&lt;/a&gt;User=www-data
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-9" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-9"&gt;&lt;/a&gt;ExecStart=/usr/local/bin/mitmdump --listen-host 127.0.0.1 -p 8080 -s /opt/websocket_messages.py --mode reverse:http://127.0.0.1:4000 --set keep_host_header --quiet
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-10" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-10"&gt;&lt;/a&gt;Restart=on-failure
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-11" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-11" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-11"&gt;&lt;/a&gt;
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-12" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-12" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-12"&gt;&lt;/a&gt;[Install]
&lt;a id="rest_code_7d306e7980fa4af8a803dcd60d9360e1-13" name="rest_code_7d306e7980fa4af8a803dcd60d9360e1-13" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_7d306e7980fa4af8a803dcd60d9360e1-13"&gt;&lt;/a&gt;WantedBy=multi-user.target
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;hr class="docutils"&gt;
&lt;section id="section-1"&gt;
&lt;h2&gt;详细解说&lt;/h2&gt;
&lt;section id="section-2"&gt;
&lt;h3&gt;移除响应头&lt;/h3&gt;
&lt;p&gt;需要为 .onion 域名移除 &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;Strict-Transport-Security&lt;/span&gt;&lt;/code&gt; 响应头：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_f11ec248d14b4293b4332c7be854b652-1" name="rest_code_f11ec248d14b4293b4332c7be854b652-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f11ec248d14b4293b4332c7be854b652-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=31536000"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;若不移除该行，浏览器将使用https地址访问。&lt;/p&gt;
&lt;p&gt;若存在的话，顺便也移除 &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;/code&gt;：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_ba19f5452f104fa4b5d0a90b36a98bcd-1" name="rest_code_ba19f5452f104fa4b5d0a90b36a98bcd-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_ba19f5452f104fa4b5d0a90b36a98bcd-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"https://s3.us-west-1.wasabisys.com"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="https-http"&gt;
&lt;h3&gt;将302地址从 https 改为 http&lt;/h3&gt;
&lt;p&gt;由于tor只提供http服务，但是mastodon程序却经常使用302进行跳转，跳转之后的地址一般为https。
这就会导致跳转之后无法访问网页，必须要用户手动将https改为http。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_255bd8f91ae3443fb33750d72d492fa1-1" name="rest_code_255bd8f91ae3443fb33750d72d492fa1-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_255bd8f91ae3443fb33750d72d492fa1-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="section-3"&gt;
&lt;h3&gt;替换文件基本设置&lt;/h3&gt;
&lt;p&gt;替换多次：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_048f2d5d296242619bc48a9092c03f11-1" name="rest_code_048f2d5d296242619bc48a9092c03f11-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_048f2d5d296242619bc48a9092c03f11-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter_once&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;替换 json：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_a9dd2f5feeae44508a69cbc7c200eb8b-1" name="rest_code_a9dd2f5feeae44508a69cbc7c200eb8b-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_a9dd2f5feeae44508a69cbc7c200eb8b-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter_types&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;添加本地mitm代理，将 gzip 包解压缩，方便进行替换：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-1" name="rest_code_f5945ea93f21492f85566d861fef3696-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-2" name="rest_code_f5945ea93f21492f85566d861fef3696-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s"&gt;unix:/tmp/mitm.sock&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-3" name="rest_code_f5945ea93f21492f85566d861fef3696-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gunzip&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-4" name="rest_code_f5945ea93f21492f85566d861fef3696-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-5" name="rest_code_f5945ea93f21492f85566d861fef3696-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-6" name="rest_code_f5945ea93f21492f85566d861fef3696-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-7" name="rest_code_f5945ea93f21492f85566d861fef3696-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mastodon.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-8" name="rest_code_f5945ea93f21492f85566d861fef3696-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://backend&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-9" name="rest_code_f5945ea93f21492f85566d861fef3696-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_f5945ea93f21492f85566d861fef3696-10" name="rest_code_f5945ea93f21492f85566d861fef3696-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_f5945ea93f21492f85566d861fef3696-10"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;并将 &lt;code class="docutils literal"&gt;@proxy&lt;/code&gt; 中 proxy_pass 改为该 mitm 代理地址：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_25edc3df6a194bf68c2fcee4930a64b6-1" name="rest_code_25edc3df6a194bf68c2fcee4930a64b6-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_25edc3df6a194bf68c2fcee4930a64b6-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://unix:/tmp/mitm.sock&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="onion"&gt;
&lt;h3&gt;将页面中所有普通域名替换为 .onion 域名&lt;/h3&gt;
&lt;p&gt;将所有https链接改为http&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_4c6288dc0009425a9c5b468032331ab7-1" name="rest_code_4c6288dc0009425a9c5b468032331ab7-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4c6288dc0009425a9c5b468032331ab7-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将所有普通域名替换为 .onion 域名&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_63e796a655f143babc5c104907053405-1" name="rest_code_63e796a655f143babc5c104907053405-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_63e796a655f143babc5c104907053405-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://bgme.me/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://&lt;/span&gt;&lt;span class="nv"&gt;$host/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将 streaming_api_base_url 替换为 .onion 域名&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_09a9e2104ec940b589f747faab9bd6e1-1" name="rest_code_09a9e2104ec940b589f747faab9bd6e1-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_09a9e2104ec940b589f747faab9bd6e1-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'"streaming_api_base_url":"wss://bgme.me"'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'"streaming_api_base_url":"ws://&lt;/span&gt;&lt;span class="nv"&gt;$host"'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="onion-1"&gt;
&lt;h3&gt;将外部资源链接替换为 .onion 域名&lt;/h3&gt;
&lt;p&gt;因本站只将媒体文件托管理 S3 storage，故此处仅替换媒体文件。若还有静态文件，则与此相类。&lt;/p&gt;
&lt;p&gt;反代外部资源：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-1" name="rest_code_459817e6aa7149108d8a606a1b92ae27-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-2" name="rest_code_459817e6aa7149108d8a606a1b92ae27-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-3" name="rest_code_459817e6aa7149108d8a606a1b92ae27-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-4" name="rest_code_459817e6aa7149108d8a606a1b92ae27-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-5" name="rest_code_459817e6aa7149108d8a606a1b92ae27-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-6" name="rest_code_459817e6aa7149108d8a606a1b92ae27-6" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mastodon_media&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-7" name="rest_code_459817e6aa7149108d8a606a1b92ae27-7" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_revalidate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-8" name="rest_code_459817e6aa7149108d8a606a1b92ae27-8" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-9" name="rest_code_459817e6aa7149108d8a606a1b92ae27-9" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_use_stale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_504&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-10" name="rest_code_459817e6aa7149108d8a606a1b92ae27-10" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_background_update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-11" name="rest_code_459817e6aa7149108d8a606a1b92ae27-11" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_lock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-12" name="rest_code_459817e6aa7149108d8a606a1b92ae27-12" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;1d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-13" name="rest_code_459817e6aa7149108d8a606a1b92ae27-13" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;1h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-14" name="rest_code_459817e6aa7149108d8a606a1b92ae27-14" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_ignore_headers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-15" name="rest_code_459817e6aa7149108d8a606a1b92ae27-15" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Cached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$upstream_cache_status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-16" name="rest_code_459817e6aa7149108d8a606a1b92ae27-16" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://s3.us-west-1.wasabisys.com/bgme-mstdn-media/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-17" name="rest_code_459817e6aa7149108d8a606a1b92ae27-17" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_459817e6aa7149108d8a606a1b92ae27-18" name="rest_code_459817e6aa7149108d8a606a1b92ae27-18" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_459817e6aa7149108d8a606a1b92ae27-18"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;替换媒体链接：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_6235d25c01074adfbae8c1263e7c0656-1" name="rest_code_6235d25c01074adfbae8c1263e7c0656-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_6235d25c01074adfbae8c1263e7c0656-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'https://img.bgme.bid/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'http://img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion/'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将媒体 .onion 域名添加至 &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;img-src&lt;/span&gt;&lt;/code&gt;：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_1b9b5cb0f5c843679fae0890379f20f8-1" name="rest_code_1b9b5cb0f5c843679fae0890379f20f8-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_1b9b5cb0f5c843679fae0890379f20f8-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_hide_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Content-Security-Policy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_1b9b5cb0f5c843679fae0890379f20f8-2" name="rest_code_1b9b5cb0f5c843679fae0890379f20f8-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_1b9b5cb0f5c843679fae0890379f20f8-2"&gt;&lt;/a&gt;&lt;span class="k"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Content-Security-Policy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"base-uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;default-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;frame-ancestors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'none'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;font-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;img-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://img.ko6h7dhb3sbygcs6iiodiavjlhomvcjn36wffoyhkgxpavz6u62jm5qd.onion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;style-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'unsafe-inline'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;media-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;frame-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https:&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;manifest-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;connect-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;data:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://img.bgme.bid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;wss://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;script-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;child-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;worker-src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'self'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;blob:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://bgme.me"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="websocket"&gt;
&lt;h2&gt;替换 websocket 中的媒体文件地址&lt;/h2&gt;
&lt;p&gt;完成上述设置，大体上的都已经走hidden service。&lt;/p&gt;
&lt;p&gt;但是实际使用时会发现，通过 websocket 推送过来的嘟文，媒体文件仍然走外部资源，所以为了隐私着想，必须把这个问题解决了。&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;首先，安装 &lt;a class="reference external" href="https://mitmproxy.org/"&gt;mitmproxy&lt;/a&gt;。
进入&lt;a class="reference external" href="https://mitmproxy.org/downloads/"&gt;下载页面&lt;/a&gt;，下载并安装最新版。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-1" name="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-1"&gt;&lt;/a&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp
&lt;a id="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-2" name="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-2"&gt;&lt;/a&gt;wget&lt;span class="w"&gt; &lt;/span&gt;https://snapshots.mitmproxy.org/5.1.1/mitmproxy-5.1.1-linux.tar.gz
&lt;a id="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-3" name="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-3"&gt;&lt;/a&gt;wget&lt;span class="w"&gt; &lt;/span&gt;https://snapshots.mitmproxy.org/5.1.1/pathod-5.1.1-linux.tar.gz
&lt;a id="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-4" name="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-4"&gt;&lt;/a&gt;tar&lt;span class="w"&gt; &lt;/span&gt;-x&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;/usr/local/bin&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;mitmproxy-5.1.1-linux.tar.gz
&lt;a id="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-5" name="rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_4e7bf7cb2be641f29b4ddeed7c0c75d4-5"&gt;&lt;/a&gt;tar&lt;span class="w"&gt; &lt;/span&gt;-x&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;/usr/local/bin&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;pathod-5.1.1-linux.tar.gz
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;配置 mitmproxy，以替换媒体地址。&lt;/p&gt;
&lt;p&gt;创建 &lt;code class="docutils literal"&gt;/opt/websocket_messages.py&lt;/code&gt;、&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/etc/systemd/system/mitm-mastodon-websocket.service&lt;/span&gt;&lt;/code&gt; 两文件。&lt;/p&gt;
&lt;p&gt;并运行如下命令：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_d70dced3142b494a8892f90e4e04634b-1" name="rest_code_d70dced3142b494a8892f90e4e04634b-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d70dced3142b494a8892f90e4e04634b-1"&gt;&lt;/a&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;/var/www/.mitmproxy
&lt;a id="rest_code_d70dced3142b494a8892f90e4e04634b-2" name="rest_code_d70dced3142b494a8892f90e4e04634b-2" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d70dced3142b494a8892f90e4e04634b-2"&gt;&lt;/a&gt;chown&lt;span class="w"&gt; &lt;/span&gt;www-data:wwww-data&lt;span class="w"&gt; &lt;/span&gt;/var/www/.mitmproxy
&lt;a id="rest_code_d70dced3142b494a8892f90e4e04634b-3" name="rest_code_d70dced3142b494a8892f90e4e04634b-3" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d70dced3142b494a8892f90e4e04634b-3"&gt;&lt;/a&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
&lt;a id="rest_code_d70dced3142b494a8892f90e4e04634b-4" name="rest_code_d70dced3142b494a8892f90e4e04634b-4" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d70dced3142b494a8892f90e4e04634b-4"&gt;&lt;/a&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;mitm-mastodon-websocket.service
&lt;a id="rest_code_d70dced3142b494a8892f90e4e04634b-5" name="rest_code_d70dced3142b494a8892f90e4e04634b-5" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d70dced3142b494a8892f90e4e04634b-5"&gt;&lt;/a&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mitm-mastodon-websocket.service
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将 nginx 配置文件中 streaming api &lt;code class="docutils literal"&gt;proxy_pass&lt;/code&gt; 改为 mitm 代理地址：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_d0511e279d0f4c90a5a3189a9913b030-1" name="rest_code_d0511e279d0f4c90a5a3189a9913b030-1" href="https://blog.bgme.me/posts/2020/mastodon-hidden-service/#rest_code_d0511e279d0f4c90a5a3189a9913b030-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://127.0.0.1:8080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;至此，所有配置已完成。&lt;/p&gt;
&lt;p&gt;重载nginx配置即可。&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;一点吐嘈：&lt;/p&gt;
&lt;p&gt;虽然官方文档中说什么 DRY（Don't repeat yourself），但实际上配置下来，会发现提取 nginx 配置共性至单独一文件，并没有节省多少行数。&lt;/p&gt;
&lt;/section&gt;</description><category>Mastodon</category><category>tor</category><guid>https://blog.bgme.me/posts/2020/mastodon-hidden-service/</guid><pubDate>Sun, 10 May 2020 15:44:07 GMT</pubDate></item></channel></rss>