最初の投稿で、 Apache Traffic Serverをキャッシングリバースプロキシとして使用することを説明しました。 レビューでは、なぜnginxではないのですか? ATSはまだサイトのコンテンツを変換する便利な方法を見つけられなかったので、私はNginxの機能を調べることにしました。 問題を解決するために、私はドキュメンテーションのジャングルに深く入り込まなければなりませんでした。
前回同様、
example.comを
example.ruに変換し
ます 。 Nginxの構成とインストールについては説明しません(これについては多くの記事があります)が、特定の有用な設定については説明します。
グローバル構成-nginx.confworker_processes 4;
仮想サーバーのセットアップ-example.conf server { listen 80; server_name example.ru; access_log logs/example.ru.access.log main; error_log logs/example.ru.error.log; index index.html; root /usr/local/nginx/html/example.ru;
元のサイトの写真は次の場所にあることを覚えています。
http://super-cdn.com/img
ただし、上記の構成を実行すると、Nginxがフォームのすべてのリンクを残したことがわかります。
= http://super-cdn.com/img/*
プロキシ化されていません。 これはドメインの違いによるものであることは明らかです。 また、この状況では、ユーザーが私たちを迂回してCDNから直接それらを取得するため、翻訳された写真をスリップする機会がないことも明らかです。 したがって、変換の魔法が必要です!
example-transform.confを開きます sub_filter 'http://super-cdn.com/img/' 'http://example.ru/img/' ; sub_filter_once off;
デフォルトでは、変換モジュールはコンパイルされていません! パラメータが必要:
./configure --with-http_sub_module
コンパイル、再起動...ビンゴ!!! ファンファーレ!!!
すべてが機能し、すべてが飛ぶ、外出先で写真を交換できます。
ページのコンテンツを置き換えるための最初のルールを喜んで追加し、... http_sub_moduleモジュールを使用すると、たった1つの置き換えを実行できるという衝撃的な情報を見つけました!
ああ、イゴール・シソエフ、なぜあなたはドキュメンテーションのページにこの恐ろしい事実を隠したのですか!
sysoev.ru/nginx/docs/http/ngx_http_sub_module.htmlああ、最初にそのようなフィナーレを知っていたなら! しかし...やめて! 感情はさておき、ロシア人と中国人は永遠に兄弟だからです! 単純な中国人のWeibin Yaoはすでに問題を解決し、substitutions4nginxモジュールを作成しました。
code.google.com/p/substitutions4nginx指示に従ってモジュールをインストールし、変換構成を開いて大胆に書きます:
subs_filter 'http://super-cdn.com/img/' 'http://example.ru/img/' g; subs_filter '<title[^>]*>(.*?)</title>' '<title> . !</title>' oir;
あとがきの代わりに1.構成はワーカーから作成されましたが、明らかな理由でライブでチェックされませんでした。 何か問題がある場合は私がお手伝いします。
2. Nginxは、非標準のほとんど探索されていないモードで動作します。
ここにそのようなバグがあります。
3. substitutions4nginxモジュールは実行されていません。1つのバグがすぐに見つかり、すぐに修正されました。 どうやらテスターの群衆が必要です。
4. Apache Traffic ServerとNginxで、同じバグが見つかりました。 改行を含むhrefのようなリンクを持つタグはソースされません。 問題はPCREライブラリに起因していると思われます。
Z.Y. 2番目のブロックで、ソースlang =「bash」の強調表示が機能しない理由を教えてください。それは良いことです。
Z.Z.Y. 強調表示の問題を特定したため、パーサーはコードを中断します。
://
構成に不要なエラーを導入しないように、強調表示せずにユニットを残します。