2010-12-14 5 views
2

Je n'ai pas encore décidé si c'est un problème d'Apache, ou un problème de Sinatra, nous avons un tas de petites applications fonctionnant sur un seul serveur, nous les déployons avec juste des instances webrick intégrées et utilisons apache pour re acheminez ces demandes par sous-domaine vers le port approprié. J'utilise gollum qui est une application sinatra avec une couche de persistance git, mais je reçois un routage d'application inattendu quand il redirige (après une action d'édition). Je ne sais pas si je peux résoudre ce problème en transmettant une option de démarrage à Sinatra ou en configurant dans la déclaration de l'hôte virtuel une règle de réécriture pour l'application. Dans votre réponse, veuillez indiquer quelle option vous semble la meilleure et un exemple de la façon dont cela pourrait être accompli. Merci,S'agit-il d'un problème de configuration Sinatra ou d'un problème de configuration Apache?

# apache virtualhost declaration 
<VirtualHost *:80> 
    ServerName wiki.domain.com 
    DocumentRoot "/var/www/html" 

    ProxyPass/http://localhost:3006 
    ProxyPassReverse/http://localhost:3006 
</VirtualHost> 

résout avec bien sinatra pour GETS, par exemple

wiki.domain.com/Home 

mais échoue sur sinatra rediriger

# expected 
wiki.domain.com/Home 

# actual 
wiki.domain.com:3006/Home 

et voici l'action Sinatra (source: https://github.com/github/gollum/blob/master/lib/gollum/frontend/app.rb)

post '/edit/*' do 
    name = params[:splat].first 
    wiki = Gollum::Wiki.new(settings.gollum_path) 
    page = wiki.page(name) 
    format = params[:format].intern 
    name = params[:rename] if params[:rename] 

    wiki.update_page(page, name, format, params[:content], commit_message) 

    redirect "/#{CGI.escape(Gollum::Page.cname(name))}" 
end 

Répondre

0

C'est long, mais peut-être les URL dans les directives ProxyPass doivent avoir un /? C'est comme ça dans la documentation, et j'ai des entrées étranges dans error.log sans elles.

Questions connexes