Сбой перенаправления Rails при настройке nginx и unicorn

Я настроил свою систему для работы на nginx и unicorn, как описано в эпизоде ​​Railscasts #293.

Когда я пытаюсь перенаправить, например

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

Меня перенаправляют на http://unicorn/posts вместо http://mydomain.com/posts

Вот мой nginx.conf для приложения

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;
}

person Jakub Arnold    schedule 17.11.2011    source источник
comment
У меня аналогичная настройка, только вместо location @unicorn у меня location /. Вы пробовали это?   -  person Frost    schedule 17.11.2011
comment
@MartinFrost Да, не помогло. Мне кажется, что он использует URL-адрес proxy_pass в качестве базового URL-адреса вместо имени домена.   -  person Jakub Arnold    schedule 17.11.2011
comment
Вы также можете опубликовать свой ./config/unicorn.rb контент? например строка с директивой listen.   -  person Tilo    schedule 22.11.2011


Ответы (1)


Это работает для меня:

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;
  }

}

и в моем файле ./config/unicorn.rb:

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