使用nginx和代理通过xslt解析无效的html

使用nginx和代理通过xslt解析无效的html,html,xslt,proxy,nginx,Html,Xslt,Proxy,Nginx,我通过nginx将html从intranet传递到Internet。我想用html文件进行一些转换。 我在nginx.conf中使用了这样的片段 location /news/ { proxy_pass http://news.intranet/$request_uri; proxy_set_header Host news.intranet; xslt_types text/html;

我通过nginx将html从intranet传递到Internet。我想用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中收到诸如“开始和结束标记不匹配”之类的消息。可能是另一个


我如何控制和避免它?

你不能。在一般情况下,XML解析器无法解析HTML。只有使用格式良好的XHTML,它才能工作。

Nginx的XSLT模块的当前实现不支持HTML,因为它当前使用的是XML解析器。也就是说,可以对XSLT模块进行修补,以包括对HTML转换的支持。Nginx当前稳定版本的补丁(撰写本文时为1.4.2)可从以下站点获得。您将需要应用此修补程序并重新编译Nginx,确保使用
--with-http\u xslt\u模块
支持配置编译。Nginx早期版本(约1.1版)的原始补丁最初来自

有关配置此修补版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内容类型的解析器