【问题标题】:Executing CGI Scripts with Apache+SSL使用 Apache+SSL 执行 CGI 脚本
【发布时间】:2013-03-13 07:40:24
【问题描述】:

我在尝试通过 apache 执行 CGI 脚本时遇到了一些问题。此脚本与 OpenLayers proxy.cgi 相同,它允许在自己的域之外发出 AJAX 请求。该脚本使用正常的 apache 配置(没有 SSL)运行顺利且没有任何错误,但是!当我启用 SSL 时,它开始表现不稳定。

首先让我向您展示我的 SSL 的 apache 配置:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName 172.22.1.37
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCertificateFile /etc/apache2/ca/apache-server.crt
    SSLCertificateKeyFile /etc/apache2/ca/apache-server.key
    SSLCertificateChainFile /etc/apache2/ca/proba.crt
    SSLCACertificateFile /etc/apache2/ca/proba.crt
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl    .crl
    Alias /mapviewer "/var/www/mapviewer/"
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    AddHandler cgi-script .cgi
    DocumentRoot /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All 
        Options +ExecCGI -Multiviews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

所以,SSL 加载正确,因为我尝试了其他 webapps 并且它们在 https 中运行顺利,问题是这个使用 proxy.cgi 的应用程序

奇怪的是,当我启动 apache 时,一开始它会正常工作,没有任何问题,但过了一段时间(我不确定它是否取决于时间或请求数量,尽管经过测试我会说是前者)当javascript代码调用这个proxy.cgi脚本时,请求会挂在那里,最后由于“超时”而中止。

是否需要启用任何其他选项才能通过 https 执行 cgi 脚本?有什么我想念的吗?我可以放proxy.cgi代码,但我认为它没有任何关系,因为它已被证明可以正常工作,这里的问题是启用了SSL,它不会被执行。

感谢阅读!

【问题讨论】:

  • 您有公开的地址吗?如果是这样,我可以看看系统生成的请求和响应,这对我很有用。
  • 恐怕不行 :( 它在我的本地机器上运行,由于代理,我无法让你访问它

标签: apache ssl cgi


【解决方案1】:

首先,感谢 Joseph Myers 的建议,因为即使他们没有提供解决方案,他们也帮助我解决了这个问题。他所说的僵尸进程是有道理的,在深入了解之后,我意识到不是在 apache 启动时加载 mod_cgid,而是加载了 mod_cgi。差异非常明显,知道(在查看 httpd 文档之后)mod_cgid

创建一个外部守护进程,负责派生子进程以运行 CGI 脚本

而且它似乎也是默认的,而不是 cgi。我不记得自己改变了它,但是,谁知道呢,它现在起作用了!

tl;博士,不要使用 mod_cgi!请改用 mod_cgid!

【讨论】:

  • 谢谢你的好话!
【解决方案2】:

我有时会遇到这样的问题,几乎所有问题都通过在每个 HTTPS 响应中强制“连接:关闭”来解决。它应该打印在 HTTP 标头中。此外,请确保 proxy.cgi 脚本在每次运行后关闭/存在,以确保 Apache SSL 进程不会被永远不会自行关闭的僵尸进程填满。

【讨论】:

  • 感谢您的回答!我尝试了您提到的两种方法,但似乎不是这样:( 似乎,虽然我在 Apache 服务器上配置 SSL 时出现了这个问题,但即使我恢复了以前的配置,它仍然存在。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 2012-02-16
相关资源
最近更新 更多