【问题标题】:nginx SSI call - how to execute a script via proxy pass?nginx SSI 调用 - 如何通过代理传递执行脚本?
【发布时间】:2017-11-10 15:11:00
【问题描述】:

我正在尝试如何在我的 HTML 页面中实现这一点:

<!--# exec cgi="/cgi-bin/links/track_ssi.cgi" -->

我在日志文件中看到了这个:

invalid SSI command: "exec" while sending response to client

我们有一个从 nginx 到 Apache2.4 的代理传递:

    location ~ \.cgi$ {
        gzip off;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8181;
    }

据我所知,它甚至没有走那么远。我做错了什么?

谢谢!

【问题讨论】:

    标签: nginx ssi


    【解决方案1】:

    没有exec cgi SSI 命令,请看Nginx documentation on SSI

    正确的 SSI 片段将是

    <!--#include virtual="/cgi-bin/links/track_ssi.cgi" -->
    

    (假设其他一切都正确配置)

    【讨论】:

    • 谢谢 - 这摆脱了错误,但它导致了另一个问题。在我们使用它来获取相关页面之前:$ENV{DOCUMENT_URI} =~ /Detailed\/(\d+)\.html/ and $link_id = $1;,但 $ENV{DOCUMENT_URI} 似乎没有被传递 - 有没有办法在请求中传递当前 URL?
    • 废话 - 我可以直接通过&lt;!--#include virtual="/cgi-bin/links/track_ssi.cgi?link=21" --&gt;,它就像一个魅力。谢谢! (它不会让我给你 23 小时的赏金:/)
    猜你喜欢
    • 2018-01-07
    • 2018-03-29
    • 2019-06-24
    • 2011-10-10
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多