我使用 apache2 作为 Web 服务器。我想帮助他使用 lighttpd 作为静态内容的代理。不幸的是,我无法很好地设置 lighttpd 和 apache2。(操作系统:Debian)
lighttpd.config 中的重要内容:
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_proxy",
"mod_status",
)
server.document-root = "/www/"
server.port = 82
server.bind = "localhost"
$HTTP["remoteip"] =~ "127.0.0.1" {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/"
)
$HTTP["url"] =~ "^/doc/|^/images/" {
dir-listing.activate = "enable"
}
}
我只想在一个站点上使用 lighttpd 作为 apache2 上的虚拟目录运行。此虚拟目录的配置:
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /images http://0.0.0.0:82/
ProxyPass /imagehosting http://0.0.0.0:82/
ProxyPass /pictures http://0.0.0.0:82/
ProxyPassReverse / http://0.0.0.0:82/
ServerName MY_VALUES
ServerAlias www.MY_VALUES
UseCanonicalName Off
DocumentRoot /www/MYAPP/forum
<Directory "/www/MYAPP/forum">
DirectoryIndex index.htm index.php
AllowOverride None
...
正如您所见(或未见;))我的服务物理位于以下路径:
/ www / myapp / forum
并且我想支持lighttpd处理的文件夹:
/ www / myapp / forum / images
/ www / myapp / forum / imagehosting
/ www / myapp / forum / pictures
其余部分(PHP 脚本)留给 apache
运行 lighttpd 和 apache2 工作组后,没有显示这些位置的任何图像。出了什么问题?
答案1
我认为您的配置创建方式是错误的。使用您的配置,lighttpd 由 Apache httpd 代理,这没有多大意义,因为您的目标是利用 lighttpd 的(据称)更好的性能。
因此将 Apache httpd 绑定到另一个端口和接口(例如127.0.0.1:8080
),然后让 lighttpd 的 mod_proxy 做这些脏活。
看http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxy有关 lighttpd 的 mod_proxy 配置示例。
答案2
尝试在 apache 中更改这些行:
ProxyPass /images http://127.0.0.1:82/
ProxyPass /imagehosting http://127.0.0.1:82/
ProxyPass /pictures http://127.0.0.1:82/
ProxyPassReverse / http://127.0.0.1:82/
答案3
我不明白你为什么lighttpd.config
有:
server.document-root = "/www/"
这不应该和 Apache 一样吗?
server.document-root = "/www/MYAPP/forum/"
或者我遗漏了什么?
您可能还想删除alias.url
的条目images
,因为这也会破坏某些东西。