Nginx で ssi を使かう

Nginx で ssi を使かう

Apache から Nginx に変更したら ssi 動かないので調べてみた。

NGINX の設定

SSI は一々、NGINX で HTML の内容をパースするため、NGINX のパフォーマンスに影響が大きいので、無差別に SSI をオンにしないように、NGINX の conf の location で対象を絞った方がいいと思う。例えば、index.html にどうしてもアクセスカウンターを SSI で表示させたいと思っているとしたら、次のようにする

location /index.html {
	ssi on;
	ssi_types text/plain; # デフォルトの text/html に加えて、text/plain も扱う場合
    
    root /www
}

前述のように、NGINX の SSI は、静的なファイルのインクルードか、CGI からの出力をインクルードする程度のものしか対応する気がないようである。CGI からの出力を HTML ファイルの中に埋め込んで表示する場合は、include virtual コマンドを使う:

<!--# include virtual="/cgi-bin/ssi/test.py" -->
https://blog.scaredeer.com/2023/12/nginx-ssi.html?m=1

nginx.conf を編集

server {
    location / {
	ssi on; #追加
	ssi_last_modified on; #追加
    }
}

と言うことで、実際やってみると上手くいかない。

<!--# include virtual="絶対値で設定" -->

絶対値で設定すると出来た。

Apache から Nginx に変更したら文字化け

Apache から Nginx に変更したら文字化けが発生したので調べてみた。
nginx.conf を編集

server {
    location / {
	charset utf-8;
    }
}

文字化けが解消した。

参考サイト

https://qiita.com/xKxAxKx/items/898869f9c0707896739\5
https://blog.scaredeer.com/2023/12/nginx-ssi.html?m=1

タイトルとURLをコピーしました