0

nginx経由でイントラネットからインターネットにhtmlを渡します。HTMLファイルでいくつかの変換を行いたいです。nginx.confでそのようなフラグメントを使用します

    location /news/ {
            proxy_pass      http://news.intranet/$request_uri;
            proxy_set_header Host news.intranet;
            xslt_types text/html;
            xslt_stylesheet /var/www/www/style-news.xsl;
    }

しかし、html が有効でない場合、error.log に「開始タグと終了タグが一致しません」などのメッセージが表示されます。他のかもしれません。

どうすればそれを制御し、回避できますか?

4

2 に答える 2

0

それはいけません。一般に、HTML は XML パーサーでは解析できません。整形式の XHTML を使用する場合にのみ機能します。

于 2012-12-11T14:57:30.040 に答える
0

Nginx の XSLT モジュールの現在の実装は、現在 XML パーサーを使用しているため、HTML をサポートしていません。とはいえ、XSLT モジュールにパッチを適用して、HTML 変換のサポートを含めることは可能です。Nginx の現在の安定バージョン (執筆時点では 1.4.2) のパッチは、https://github.com/jcu-eresearch/nginx-custom-build/blob/master/nginx-xslt-html-parserで入手できます。 .パッチ。このパッチを適用して Nginx を再コンパイルし、コンパイルを--with-http_xslt_moduleサポート付きで構成する必要があります。Nginx の以前のバージョン (v1.1 年頃) の元のパッチは、もともとhttps://bitbucket.org/lrowe/nginx-xslt-html-parserからのものでした。

このパッチ適用済みバージョンの Nginx を構成する手順は、 http: //docs.diazo.org/en/latest/deployment.html#nginx にあります。したがって、あなたの場合、Nginx の構成は次のようになります。

location /news/ {
    proxy_pass         http://news.intranet/$request_uri;
    proxy_set_header   Host news.intranet;
    xslt_stylesheet    /var/www/www/style-news.xsl;
    xslt_html_parser   on;
    xslt_types         text/html;
}

これにより、特別な HTML パーサーが有効になり、HTML コンテンツ タイプのパーサーが有効になります。

于 2013-08-20T00:39:56.973 に答える