2011-11-17 12 views
7

Ho impostato il mio avvio per eseguire nginx e unicorno come descritto nell'episodio Railscast # 293.Il reindirizzamento dei binari non riesce su setup nginx e unicorno

Quando provo a riorientare, come ad esempio

class PostsController < ApplicationController 
    def show 
    redirect_to posts_path, :notice => "Test redirect" 
    end 
end 

vengo reindirizzato al http://unicorn/posts invece di http://mydomain.com/posts

Ecco la mia nginx.conf per l'applicazione

upstream unicorn { 
    server unix:/tmp/unicorn.scvrush.sock fail_timeout=0; 
} 

server { 
    listen 80 default deferred; 
    # server_name example.com; 
    root /var/apps/current/public; 

    try_files $uri/index.html $uri @unicorn; 

    location @unicorn { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

    keepalive_timeout 5; 
} 
+0

Ho una configurazione simile, ma invece di 'posizione @ unicorn' Ho' posizione/'. Hai provato? – Frost

+0

@MartinFrost Sì, non ha aiutato. Mi sembra che usi l'URL proxy_pass come URL di base, invece del nome di dominio. –

+0

puoi pubblicare anche i tuoi contenuti './Config/unicorn.rb'? per esempio. la linea con la direttiva 'listen'. – Tilo

risposta

5

Questo funziona per me :

upstream unicorn { 
    server unix:/tmp/unicorn.example.sock fail_timeout=0; 
} 

server { 
    listen  80; 
    listen  localhost; 
    server_name www.example.com; 
    keepalive_timeout 5; 

    location/{ 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    # this is required for HTTPS:                                                            
    # proxy_set_header X-Forwarded-Proto https; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

} 

e nel mio file ./config/unicorn.rb:

# Listen on a Unix data socket                                                                     
listen "/tmp/unicorn.example.sock", :backlog => 64