nginxのHttpSubModuleを使ってHTML内のリンクを書き換えてみた


nginxのリバースプロキシを使用して運用していたnode.jsのサービスがあったんですが、HTML内のリンクがスラッシュ始まりになっており、実際のURLはサブディレクトリを切っていたのでアクセスできずにリンク切れ状態になっていました。apacheで運用していた時は、mod_proxy_htmlなどを使ってHTML内のリンクを書き換えていたんですが、nginxでも同様の事ができないか調べたところ、下記のモジュールで行うようです。

HttpSubModule

ページ内に使い方は書かれていますが、今回のようにスラッシュ始まりのURLを置換するには下記のようにしました。ダブルクォーテーションで囲まれていないといけないなどの制約があります。また、sub_filterを複数書くことができないので、いくつか条件を指定したい場合にはどうやるんでしょう。

    location /nodejs/ {
        sub_filter \"/ '"/nodejs/';
        sub_filter_once off;
        proxy_pass https://nodejs_backend/;
    }

関連記事