ApacheのSSI(Server-Side Includes)を検証してみる

 
この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

ApacheのWEBページへのアクセスを検証したい時に index.html を表示させることはよくあると思います。

検証している時にふと、Apache の index.html を利用してWEBページを表示させた時にホスト名やIPアドレスを動的に表示することはできないのか疑問に思い chatgpt に聞きました。
すると、純粋な静的HTMLではできない(HTMLはサーバ側変数を解釈しないため)ですが、Apacheの機能(mod_include, PHP, CGIなど)を使えば簡単に実現できるとのことでした。
そこで今回、一番簡単そうな mod_include (SSI) を利用して検証してみたいと思います。

   

環境

検証環境は、Oracle Cloud Infrastructure の Oracle-Linux-9.6-2025.09.16-0 を使用しています。

   

事前準備:WEBサーバのインストールと確認

Apache HTTPサーバーをインストールします。「Complete!」が表示されればインストールは完了しています。

  sudo yum -y install httpd

サービスを起動して、OSを再起動してもサービスが自動起動するよう設定します。

  sudo systemctl start httpd
  sudo systemctl enable httpd

サービスが起動しているか確認しておきます。

  sudo systemctl status httpd

firewalldでポート番号を指定して、80番ポート(http)と443番(https)ポートをオープンします。「success」が表示されれば成功しています。

  sudo firewall-cmd –permanent –add-port=80/tcp
  sudo firewall-cmd –permanent –add-port=443/tcp

firewalldをリロードして設定を反映します。

  sudo firewall-cmd –reload

index.html ファイルを作成し、「WEBサーバ1号機」と表示されるようにします。

  sudo touch /var/www/html/index.html
  sudo vi /var/www/html/index.html

ブラウザでアクセスしてindex.htmlが表示されました。

   

SSI(Server-Side Includes)の設定

サイトのルートに SSI を有効化するため、/etc/httpd/conf/httpd.conf の ブロックを2箇所編集します。

■編集前

Directory “/var/www/html” ディレクティブ

IfModule dir module ディレクティブ

■編集後

Directory “/var/www/html” ディレクティブ

IfModule dir module ディレクティブ

※index.shtmlの追記を忘れるとApache初画面が表示されます。

   

index.shtml ファイルの作成

事前に作成していた index.html を index.shtml にリネームします。

  sudo mv /var/www/html/index.html /var/www/html/index.shtml

index.shtml の中身を編集して、以下のとおりに書き換えます。

  sudo vi /var/www/html/index.shtml

<html>
  <head><title>LB backend check</title></head>
  <body>
    <h1>Backend identification (SSI)</h1>
    <p>Hostname: <!--#echo var="SERVER_NAME" --></p>
    <p>Server IP: <!--#echo var="SERVER_ADDR" --></p>
    <p>Client IP: <!--#echo var="REMOTE_ADDR" --></p>
    <p>Time: <!--#echo var="DATE_LOCAL" --></p>
  </body>
</html>

上記それぞれの <!–#echo var=”~” –> は、「サーバが持っている環境変数をページ内に表示せよ」という意味になります。

Apacheを再起動します。

  sudo systemctl restart httpd

   

動作確認

ブラウザでアクセスすると設定した情報が動的に表示されました!「Hostname」は、Apache で「ServerName localhost」を指定していないため、自動で一時的にIPアドレスが表示されています。

   

まとめ

ApacheのSSI(Server-Side Includes)を利用して動的にホスト名やIPアドレスを表示することができました。これをAWSやOCIのオートスケーリングで展開されるWEBサーバへ仕込んでロード・バランサ配下で負荷分散されていることを確認したいと思います。

   

以下、他の記事をまとめた一覧です。

この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

Copyright© しっぱいはせいこうのもと , 2025 All Rights Reserved.