2013-04-23 59 views
1

我已经部署了一个Rails应用到VPS服务器,并且我使用Nginx/Unicorn组合,一切正常,但由于某种原因超出了我的理解,Omniauth回调重定向错误,Omniauth Nginx Unicorn回调到错误的主机URL

ie。

http://unicorn/users/auth/linkedin/callback?oauth_token=95218ed3-b426-45ab-b022-693d2a2447cb&oauth_verifier=25955 

应该改为:

http://my-real-domain.com/users/auth/linkedin/callback?oauth_token=95218ed3-b426-45ab-b022-693d2a2447cb&oauth_verifier=25955 

有什么不对?为什么使用nginx中定义的上游名称进行回调?

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

server { 
    listen 80; 
    listen [::]:80 ipv6only=on default_server; 

    root /home/deploy/work/project/current/public; 
    index index.html index.htm; 

    server_name my-real-domain.com; 

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

    location @unicorn { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Client-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_pass http://unicorn; 
    } 

    error_page 500 502 503 504 /500.html; 

    location ~ ^/assets/ { 
    expires 1y; 
    add_header Cache-Control public; 

    add_header ETag ""; 
    break; 
    } 
} 

你能帮我吗?我需要知道如何克服这种错误的重定向。

在此先感谢!

回答

8

Nginx的不通过默认的主机头,你要告诉它:

location @unicorn { 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Client-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_pass http://unicorn; 
    } 

否则该主机请求被发送到丢失。

+0

谢谢您的回复!我真的非常渴望这个问题。只要我发送下一个部署并告诉你结果,我会尽快给你一个机会,无论发生什么,谢谢你的回复。 :) – jlstr 2013-04-25 19:15:57

+0

你好,我现在得到这个错误:nginx:[emerg]主机找不到在上游“独角兽”在/etc/nginx/sites-enabled/nginx.conf:你碰巧知道什么是缺少的?提前致谢。 – jlstr 2013-04-25 22:23:49

+0

我不知道。它抱怨无法在上游找到主机 - 你是否改变了上游独角兽{..}定义中的任何内容? – Danack 2013-04-25 22:38:56

相关问题