のんラボ

Squidの注意点

2019/06/21 2019/06/21 Squidの注意点

Squidを使用するときにはここに気をつけろ!

皆さんこんにちは。Nonです。
実は私、Qittaにもしばしば投稿しておりまして、そちらがここになります。
ある時、Squid使用中に、ハマったことがありまして、今でもちょいちょいハマる場所なので、備忘録ついてでに書いておくこととしましょう。

ちなみにQiita記事はこちら

結論

copied.if (nt == NULL)     /* empty line */
            continue;

        *nt = '\0';     /* null-terminate the address */

        debugs(1, 5, "etc_hosts: address is '" << addr << "'");

        lt = nt + 1;

        SBufList hosts;

一応念のためと思って squid のソースを読んでみたら、
なんと squid は libc を使わず独自に /etc/hosts を parse していて、
そこでは行頭にスペースやタブがあると、アドレスが書いてないものとみなされてしまうコードになっていました。
この辺です:
https://github.com/squid-cache/squid/blob/d429cbd0e4d86d4af54ed50e499da14039ff7429/src/tools.cc#L954
これはビックリ。
というわけで、行頭のスペースないしTABが squid 限定で犯人でした。

この回答くれた方には恩しか感じません。僕は完全にSquidの設定ばかりを疑っていました。

注意点

文字コードや、改行ではない。
文字コードに依存する文字がhostsの中に記述されていれば関係あるかもしれません。
しかし、hostsは基本的に英数字しか書きませんので、問題ないかと。

なんかいい方法ないですか??

自作アプリでローカルWEBサーバーにアクセスする際、Squidでリバースプロキシ立てちゃう方法をよく使用します。
この手法してるとあらぬトラブルに巻き込まれるので、なんかいい方法ありませんか?
ちなみに、エミュレーターで無理くりするあの感じが嫌なので、実機を使用しています。

最後に

ちょっと短いけど今日はここまで。
たまには過去の資産をまとめることも悪くないですね。
こういうリメイク記事も作成していくかもしれません。
にしてもコード読んで解決とは・・・世の中にはすごい人がたくさんいますね。