ブラウザはport 6000にアクセスできない

知らんかった…

Dockerでローカル環境を構築していた時にブラウザはport 6000にアクセスできないことを知った。例えばdockerで以下のようにnginxを起動。

docker run -p 6000:80 -v $(pwd)/htdocs:/usr/share/nginx/html --name web nginx:latest

chromehttp://localhost:6000/ にアクセスすると

f:id:paulownia:20181101225734p:plain

などというメッセージが表示される。dockerネットワークの設定が何か間違ってる?nginxのdocument rootの場所が間違ってる?などと思ったが特に問題はなく困惑していたところ、何気なくcurlでアクセスすると普通にhtmlが帰ってくるではないか。もしかしてブラウザ側?となった。

どうやら ERR_UNSAFE_PORTというのがミソのようで、実はブラウザは6000など一部のポートへの接続を制限しているらしい。解決法は他のportを使うしかない。1024以下のwell know portでなければ何使っても問題ないだろうと勝手に思っていたがそんなことはなく、他にも6666などが制限されている。

Google Chrome ERR_UNSAFE_PORT | cubewot.de

ちなみにFirefoxでport 6000にアクセスすると

f:id:paulownia:20181101230053p:plain

こういうわかりやすいエラーメッセージお願いしますよGoogleさーん…