2011-01-19 1 views
1

Я пытаюсь служить моему приложению с lighttpd. С приморской 2.8 следующим работал в моей lighttpd.conf:Обслуживание pharo seaside 3.0 с lighttpd

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

но с приморской 3.0 он переписывает URL сказать http://localhost/pharo при доступе к нему по сети.

Любой, кто мог обслуживать pharo и приморский 3 с помощью lighttpd?

ответ

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 

В моей конфигурации приморской моего приложения все настройки сервера (Resource Base URL, Server Hostname, Server Path, сервер Port, Server Protocol) не определены.

Кажется, что море пытается получить настройки сервера из некоторых родительских приложений, но я не могу его преследовать.

EDIT: Хорошо, спасибо Lukas (см. Комментарий), все, что мне нужно было сделать, это сбросить #serverHostname в моей конфигурации приложения, найденной в «Dispatcher: /», на nil (неуказан).

+1

Да, вы правы. Я имел в виду код Seaside 2.8 и не сравнивался с Seaside 3.0, где по умолчанию относительные URL-адреса. Вместо изменения Морского кода я предлагаю вам сбросить '# serverHostname' в вашей конфигурации приложения на' nil'. –

+0

Спасибо, что сработали, теперь я чувствую себя глупо, что это было прямо там и так очевидно :) –

0

В приморской конфигурации вашего приложения, поставить IP-адрес в поле Hostname сервера

+0

Проблема в том, что IP-адрес моего mac не является статичным, он меняет каждый раз, когда я загружаюсь, что означает, что мне придется ежедневно менять имя хоста сервера –

+0

, почему бы вам просто не использовать имя компьютера? –

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.

+0

Привет, Лукас, я положил конец, где вы сказали, но он не остановился, потому что метод takeServerParametersFromRequest: не вызван. –

Смежные вопросы