webサーバとして有名なapacheやnginxが一体どういう役割を果たしているのかがわからなかったのでまとめた。
lightsail を申し込む
awsのサービスであるlightsailに申し込むとipアドレスをもらうことができます。
http://3.112.221.xxx でアクセスしてみる
これは表示されません。
apacheをインストールし、起動する
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja
を参考にしながらサーバにapacheを導入、起動します。
再度http://3.112.221.xxxでアクセス
下のような画面が表示されます。どうやらリモートのページにつながったよう。
webサーバの役割
サーバにipアドレスを割り振られただけではサーバのデータにアクセスすることができません。
サーバ側が、飛んでくるhttpリクエストに対して適切な応答をするための窓口を設けてあげる必要があります。そして、その窓口の役割を果たすのがwebサーバというソフトウェアであり、webサーバを起動することで窓口が開設されます。
apacheを入れればどんなコンピュータでもサーバーになれるのか
そう単純な話でもない。研究室のpcでapacheサーバを立ててそこにアクセスしてみた。
# lab pc
$ip a
*****
192.168.xx.xx #ローカルip
*****
$curl inet-ip.info
133.11.xx.xx #グローバルip
環境1
http://133.11.xx.xxにmacからブラウザでアクセス
->繋がらない
環境2
http://192.168.xx.xxにmacからブラウザでアクセス(同一のLAN内)
->つながる
結果
どうやら同一のLANでないと繋がらなさそうだ。じゃあなんでlightsailはグローバルにつながるのか。研究室のLAN環境はどうなっているのだろうか。
(2025/01/15 追記)
inet-ip.infoで表示されるのは、研究室のpcが属しているネットワークのパブリックipアドレスである。そこにアクセスしてもpcのサーバには、通常繋がらない。ネットワークには多数のマシンが繋がっているので、そもそもパブリックipを指定してアクセスしただけではどのpcのサーバに接続したいのかが同定できない。
アクセスするためには、NAT超えをする必要がある。