Подавая Pharo Seaside 3.0 с LightTPD
Вопрос
Я пытаюсь обслуживать свое приложение с 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 При доступе к нему по сети.
Кто -нибудь мог подавать Pharo и Seaside 3 с LightTPD?
Решение
Следующее сработало, я расстроил следующую строку в этом методе как SO:
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 пытается получить настройки сервера от некоторых родителей приложений, но я не могу его преследовать.
РЕДАКТИРОВАТЬ: ОК, благодаря Лукасу (см. Комментарий), все, что мне нужно было сделать, это сбросить #serverhostname в конфигурации моей приложения, найденной по адресу «Dispatcher: /« NIL (неуказано).
Другие советы
В приморской конфигурации вашего приложения поместите свой IP -адрес в поле HostName Server
Похоже, 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 ] ]
Если это (или что -то подобное) решает вашу проблему, пожалуйста Создайте билет.