0

我有一个在 VisualAge Smalltalk 中开发的 Web 应用程序,它使用 ABTWSAC (Web Connect) 来进行 CGI 处理。

在 Apache 中,我只是AddHandler cgi-script .exe在 mime 模块和Options -Indexes FollowSymLinks ExecCGIDirectory 模块中。

(还有一个在 IIS 中工作的 ISAPI 处理程序)。

你到底是如何在 nginx 中做到这一点的?Nginx 似乎总是希望在端口或“unix”套接字上运行服务(Windows 显然不支持)。

所有的谷歌搜索都表明人们认为 nginx 中的 cgi 必须是 PHP。这些例子或解释都没有告诉我如何做我想做的事情。

4

2 回答 2

1

尘土飞扬,

如果我没记错的话,你也可以在 SST 之上使用 Web Connect,它基本上只是一个图像内 HTTP 服务器。因此,您的 Web 服务器 (nginx) 只需充当 HTTP(反向)代理。它并不比 fastCGI 快,但只需要在图像启动过程中对 Web Connect 设置过程进行少量更改...

于 2017-11-12T12:34:27.580 回答
1

据我所知,Nginx 没有原生 CGI 支持。它支持“仅”fastCGI。

在我看来,你有四个选择:

1) 从 ABTWSAC (Web Connect) 改为 seaside。然后用 VisualAge Smalltalk 使用 seaside。我会和这个指南一起去

从链接复制以供以后参考:

我们的裸机 Nginx FastCGI 配置

worker_processes 1;

events
{
  worker_connections  1024;
}

http
{
  include       mime.types;
  default_type  application/octet-stream;

  upstream seaside 
  {
    server localhost:9001;
    server localhost:9002;
    server localhost:9003;
  }

  server
  {
    root /var/www/glass/;

    location /
    { 
      error_page 403 404 = @seaside;
    }

    location @seaside
    {
      include fastcgi_params;
      fastcgi_pass seaside;
    }
  }
}

2) 反向代理到 Seaside(再次需要从 ABTWSAC (Web Connect) 切换),有关更多信息,请参阅此链接

3) 在同一台服务器上安装 Apache 或 lighthttpd,与 ngnix 不同的端口。您想通过 nginx 代理 cgi-bin 文件夹。我知道这有点超出了仅使用 nginx 的目的,但它也是一个可能的解决方案,所以我在这里写它。

您可以写入您的 nginx(在 8888 端口上运行)配置:

location /cgi-bin {
    proxy_pass http://127.0.0.1:8888
}

4)正如您已经建议运行具有本机 CGI 支持的 Web 服务器,例如您提到的apachelighthttpd

于 2017-10-27T12:05:11.980 回答