- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我打算在 Web 上使用的 Python 编写一组脚本。目前,我有一些使用 import cgi
的测试脚本可以正常工作。
我基本上想要 FastCGI/WSGI 的行为。在这种情况下,我可以将特定 URL 下的所有请求传递给脚本。例如,假设用户访问 URL http://www.example.com/script/run/1?param=true
。对于 /script
下的任何请求,我想要一个给定的脚本,例如 /opt/mypython/webscript.py
,它使用 import cgi
来运行并接收 URL 和 GET 参数。在这种情况下,我希望能够从脚本中看到包含 /run/1
的参数和 GET 参数的字典。
出于安全考虑,理想情况下我们希望脚本位于文档根目录之外。
我还希望能够在我的脚本中使用 x-sendfile
header 。我知道 FastCGI 模块支持这个,但不确定标准 CGI 模块是否支持。
我愿意迁移到 FastCGI,但我不想重构我的任何代码。此外,我想在开发过程中使用标准 CGI,因为我研究过的唯一 FastCGI 实现 (flup) 会导致脚本被缓存,因此在代码更改时需要完全重启整个网络服务器。此外,flup 要求您使用 CGI 接口(interface)进行一些不同的工作,这意味着需要重写一些主要代码。
flup 确实提供了一些不错的便利;它的 environ
变量提供了一个 PATH_INFO
参数,用于指定我上面提到的子路径。但是同样,标准的 CGI 模块并没有提供所有这些便利,因此 flup 需要重新编写代码,并且在代码经常更改的开发过程中它的效率非常低。
因此,理想的解决方案是使用标准 CGI 和 FastCGI 来完成此操作,而无需重新编写代码。所以在开发过程中我可以使用标准的 CGI,伴随着它的性能下降(python 解释器每次都必须启动的事实),然后当代码准备好用于生产时,很容易将它迁移到基于 FastCGI 的后端,这样它就可以以最高性能运行。
我正在使用当前版本的 lighttpd。如果可能的话,我需要做什么来为此配置 lighttpd?
最佳答案
在您的 lighttpd 配置中,创建一个将 http://host/script
映射到您的 CGI 脚本路径的别名:
alias.url += ( "/script" => "/opt/mypython/webscript.py" )
为该脚本启用 CGI 处理:
$HTTP["url"] =~ "^/script" {
cgi.assign = ( "" => "" )
}
创建检查查询字符串和 PATH_INFO 环境变量的 CGI 脚本:
import cgi, os, sys
print 'Content-Type: text/plain\n'
if 'PATH_INFO' in os.environ:
print os.environ['PATH_INFO']
form = cgi.FieldStorage()
if 'param' in form:
print form['param'].value
最后,通过网络浏览器调用脚本:
http://localhost/script/run/1?param=true
结果:
/run/1
true
关于Python + LigHTTPd + CGI : How to configure for executing single script for entire subpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25511466/
是否可以根据自定义请求 header 有条件地配置 Lighttpd? 可以通过 IP 地址(和其他变量)这样做: $HTTP["remoteip"] == "0.0.0.0" { // D
我在让 mod_proxy 将流量正确转发到在同一台机器上运行的不同网络服务器时遇到问题,以获取预定义的子文件夹。理想情况下,domain.com/docs 应该转发到 127.0.0.1:3000,
今天我在我的 ubuntu 服务器上安装了 fail2ban。在此之后,我必须添加以下 .conf 我在 githunb 上的 fail2ban 获得:/etc/config/filter.d/lig
我试图将 mimetype.assign = ( ".webapp"=> "application/x-web-app-manifest+json") 添加到我的 lighty conf 文件中,但在
我有一个指向文档根目录的 lighttpd-Setup /var/www .但是,我想要 URL other/指向 /some/other/dir .我正在使用以下配置执行此操作: $HTTP["ur
我在并行子目录中有很多项目,它们都有 etc/lighttpd.conf 文件。文件非常简单;它们只包含一个如下所示的指令: url.rewrite-once = ("^/project(.*)$"=
DeviceA 充当反向代理,并应按如下方式转发请求: 192.168.1.10/DeviceB ==> 192.168.1.20/index.html 192.168.1.10/DeviceC ==
我有一个在 AWS EC2 实例上运行的 lighttpd 服务器。它可以在端口 80(或任何其他端口,如果我更改/etc/lighttpd/lighttpd.conf 中的 server.port)
我正在使用 Lighttpd 在 Play 框架中配置负载均衡器 1.4.30 . 我在 lighttpd-inc.conf 中给出了如下条目。 $HTTP["host"] =~ "http://10
为了减轻 Apache 的负载,人们经常建议使用 lighttpd 来提供静态内容。 例如http://www.linux.com/feature/51673 在此设置中,Apache 通过 mod_
我想使用 lighttpd 作为开发服务器,类似于用于 Rails 的 WEBrick,或用于 Django 的 manage.py runserver。 (这适用于 PHP 和学习 Javascri
我正在尝试将 Lighttpd 配置为充当反向代理。我想要有多个 URL 代理到不同端口上的不同服务器,无论是在同一台计算机上还是在本地网络内。 例如: //静止的/ socket /ajax Lig
我正在尝试将 lighttpd 配置为将流量代理到一个代理服务器的一个相对路径,并将流量代理到另一个代理服务器的另一路径。 例如: http://mydomain.com/ proxies to 12
我有一个 Lighttpd(1.4.28) 网络服务器,在 Centos 5.3 和 PHP 5.3.6 上以 fastcgi 模式运行。 服务器本身是具有 1gb 内存的四核,用于记录视频平台的观看
最初我想在我的 url (lighttpd) 中添加尾随/ 这可能与有关 url.redirect = ( "^(.*[^/])$" => "$1/" ) 现在我需要排除一些扩展名,如 .tx
我正在尝试这样做: https://dummiesite.com --> http://dummiesite.com 和 http://dummiesite.com --> http://new.du
我要编译 lighttpd。我想知道是否有显示选项数组的命令,如果我选择默认值,程序将被编译? ./configure 事实上,我在 ./configure --help 中看到其中一些是默认的,但我
我试图为 lighttpd 创建我自己的模块,几分钟后我发现这一切都在 c 中!我需要 map 和我用 C++ 制作的其他一些类(class)。所以我遇到了http://redmine.lighttp
如何设置 lighttpd 以使环境变量可用于生成的进程? 我有一个通过 CGI 作为 URL 调用的可执行文件(例如 http://.../cgi-bin/executable.bin )。 可执行
(是的,我知道有关 lighttpd 的问题更适合 SF,但我认为这里更容易被问到,因为它主要与安全策略有关。) 我们计划在我的大学里建立一个小型网络服务器,这样人们就可以获得一些网络空间来放置网页等
我是一名优秀的程序员,十分优秀!