使用nginx和代理通过xslt解析无效的html
我通过nginx将html从intranet传递到Internet。我想用html文件进行一些转换。 我在nginx.conf中使用了这样的片段使用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;
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内容类型的解析器