tkhrsskの日記

技術ネタなど

Dockerで簡易proxyサーバ構築

スマホ端末のhosts設定をいじりたいが、AndroidiOSの/etc/hosts を変えるのはそれなりにハードルが高い。
もっと簡単にできないか探していたところ Macproxyサーバを立てる方法を見つけた。

www.yoheim.net

apache使うくらいなら、Docker で環境依存しない手順を確立したいないと思い、この記事を書くことにした。

ベースは、公式イメージを使えばいい。

https://hub.docker.com/_/httpd

confのいじり方も書いていたので、基本はそれに従うだけ。

まず、イメージの中身からconfを取り出す

$ docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.con

編集してproxyサーバとして動くようにする
以下、変更した箇所。

@@ -139,10 +139,10 @@
 LoadModule setenvif_module modules/mod_setenvif.so
 LoadModule version_module modules/mod_version.so
 #LoadModule remoteip_module modules/mod_remoteip.so
-#LoadModule proxy_module modules/mod_proxy.so
-#LoadModule proxy_connect_module modules/mod_proxy_connect.so
+LoadModule proxy_module modules/mod_proxy.so
+LoadModule proxy_connect_module modules/mod_proxy_connect.so
 #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
-#LoadModule proxy_http_module modules/mod_proxy_http.so
+LoadModule proxy_http_module modules/mod_proxy_http.so
 #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
 #LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
 #LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
@@ -549,3 +549,13 @@
 SSLRandomSeed connect builtin
 </IfModule>
 
+<IfModule mod_proxy.c>
+    ProxyRequests On
+    ProxyVia On
+    <Proxy *>
+        Order deny,allow
+        Deny from all
+        Allow from all
+    </Proxy>
+</IfModule>

次に Dockerfileを用意する

FROM httpd:2.4
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf

続いてDocekrイメージを作成

$ docker build -t my-httpd .

そして Dockerコンテナ起動

docker run -it -d --rm --name my-httpd -p 8080:80 my-httpd

あとはスマホ側のプロキシ設定で、Docker起動したPCのIPアドレスを指定すればOK

  • プロキシのホスト名:Docker起動したPCのIPアドレス
  • プロキシポート:8080

これで、スマホからインターネットに出るときに、Docker起動したPCのhosts設定が参照されることになる。