スマホ端末のhosts設定をいじりたいが、AndroidやiOSの/etc/hosts を変えるのはそれなりにハードルが高い。
もっと簡単にできないか探していたところ Mac にproxyサーバを立てる方法を見つけた。
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設定が参照されることになる。