我有一个在VisualAge Smalltalk中开发的web应用程序,它使用ABTWSAC(web Connect)进行CGI处理。
在Apache中,我在mime模块中简单地使用AddHandler cgi-script .exe
,在Directory模块中使用Options -Indexes FollowSymLinks ExecCGI
。
(还有一个ISAPI处理程序可以在IIS中工作)。
你到底是怎么在nginx中做到这一点的?Nginx似乎总是希望在端口或"unix"套接字上运行服务(这在windows上显然不支持)。
所有的谷歌搜索都表明,人们认为nginx中的cgi必须是PHP。没有一个例子或解释告诉我如何具体做我想做的事情。
据我所知,Nginx没有原生CGI支持。它支持"仅"fastCGI。
在我看来,你有四个选择:
1) 从ABTWSAC(网络连接)更改为seaside。然后使用VisualAge Smalltalk的海边。我会选择这本指南
从链接复制以供以后参考:
我们的Bare Bones 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) 反向代理到海滨(再次需要从ABTWSAC(网络连接)切换),有关更多信息,请参阅此链接
3) 在同一台服务器上安装Apache或lighthttpd(不同于ngnix的端口)。您想通过nginx代理cgi-bin文件夹。我知道这有点违背了只使用nginx的目的,但它也是一个可能的解决方案,所以我在这里写它。
您可以写入您的nginx(在8888端口上运行)配置:
location /cgi-bin {
proxy_pass http://127.0.0.1:8888
}
4) 正如您已经建议的那样,运行具有本机CGI支持的web服务器,如您提到的apache或lighthttpd。
灰尘,
如果我没记错的话,你也可以在SST上使用WebConnect,它基本上只是一个镜像中的HTTP服务器。因此,您的Web服务器(nginx)只需要充当HTTP(反向)代理。它并不比fastCGI快,但只需要在图像启动过程中对Web Connect设置过程进行最小的更改。。。