用lighttpd服务pharo海滨3.0

时间:2011-01-19 07:16:36

标签: lighttpd pharo seaside

我正在尝试使用lighttpd提供我的应用程序。在海边2.8,以下工作在我的lighttpd.conf中:

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

但是对于海边3.0,它会在通过网络访问时重写说http://localhost/pharo的网址。

任何人都能用lighttpd服务pharo和海滨3?

3 个答案:

答案 0 :(得分: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,服务器主机名,服务器路径,服务器端口,服务器协议)。

看起来海边试图从某些应用程序父级获取服务器设置,但我不能追逐它。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

看起来lighttpd会转发与Apache不同的原始主机名。将#halt放入WAUrl>>#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 ] ]

如果这个(或类似的东西)解决了您的问题,请create a ticket