1

我正在尝试使用 lighttpd 为我的应用程序提供服务。在 seaside 2.8 中,以下内容在我的 lighttpd.conf 中起作用:

proxy.server = ( "/pharo" => (
    ( "host" => "127.0.0.1", "port" => 8080, "check-local" => "disable"))
)

但是对于 seaside 3.0,它会在通过网络访问它时将 url 重写为http://localhost/pharo 。

有人能用 lighttpd 为pharo 和 seaside 3 服务吗?

4

3 回答 3

1

以下确实有效,我在此方法中取消了以下行的注释,如下所示:

WARequestHandler>>url
    | url |
    url := self basicUrl.
    self serverPath isNil ifFalse: [ url parsePath: self serverPath ].
    self serverProtocol isNil ifFalse: [ url scheme: self serverProtocol ].
    "self serverHostname isNil ifFalse: [ url host: self serverHostname ]."
    self serverPort isNil ifFalse: [ url port: self serverPort ].

    ^ url

在我的应用程序的海边配置中,所有服务器设置(资源基础 URL、服务器主机名、服务器路径、服务器端口、服务器协议)都未指定。

似乎 seaside 正在尝试从某些应用程序父级获取服务器设置,但我无法追踪它。

编辑:好的,感谢 Lukas(见评论),我所要做的就是将我在“Dispatcher:/”中找到的应用程序配置中的#serverHostname 重置为 nil(未指定)。

于 2011-01-20T11:52:00.360 回答
0

在您的应用程序的海边配置中,将您的 IP 地址放在服务器主机名字段中

于 2011-01-19T07:52:59.223 回答
0

看起来 lighttpd 转发的原始主机名与 Apache 不同。放入#haltWAUrl>>#takeServerParametersFromRequest:检查传入的请求aRequest。大概有一个名为的标题字段X-Forwarded-Host包含原始主机名,如果是这样,请更改方法如下:

WAUrl>>takeServerParametersFromRequest: aRequest
    "Retrieves scheme, hostname and basepath from the request unless already set."

    scheme isNil
        ifTrue: [ self scheme: aRequest url scheme ].
    host isNil ifTrue: [ 
        aRequest headers at: 'x-forwarded-host' ifPresent: [ :value | self parseAuthority: value  ].
        host isNil 
            ifTrue: [ aRequest headers at: 'host' ifPresent: [ :value | self parseAuthority: value ] ] ].
    path isNil
        ifTrue: [ aRequest headers at: 'base' ifPresent: [ :value | self parsePath: value ] ]

如果这(或类似的东西)解决了您的问题,请创建一张票

于 2011-01-19T15:06:38.980 回答