2013-06-21 60 views
1

我想让我的Rails服务器在2个不同的端口上侦听。向我提出的一个解决方案是使用nginx。我nginx的安装与sudo passenger-install-nginx-module,并添加以下内容/etc/nginx/conf.d:nginx + passenger + rails:我需要启动rails服务器还是只需启动nginx?

server { 
    listen  80; 
    listen  10000; 
    server_name www.myapp.com 
    passenger_enabled on; 
    root /root/myapp/public;} 

当我去www.myapp.com我有一个403 Forbidden错误。我想这是因为/ public中没有静态html文件。我放下了一个简单的“hello world”html页面,并且它正确加载。然后我开始使用passenger start -e production来启动我的rails应用程序,这使得它在3000端口上以独立的phusion乘客模式运行。我去myapp.com:3000,我得到了应用程序。但是,myapp:80和myapp:10000仍然不起作用。我很困惑如何让我的nginx指向我正在运行的rails服务器。我完全错了吗?谢谢!

+0

Nginx的客运启动,并为Rails服务器转发到我的轨道服务器。 Passenger作为一个模块编译成nginx,甚至在独立模式下它仍然通过nginx运行。 – cpuguy83

回答

0

设置使用nginx的这个https://gist.github.com/jeffrafter/1229497

worker_processes 1; 

error_log /usr/local/var/log/nginx.error.log; 

events { 
    worker_connections 1024; 
} 

http { 
    include   mime.types; 
    default_type  application/octet-stream; 
    sendfile   on; 
    keepalive_timeout 65; 

    upstream dev { 
     server 127.0.0.1:3000; 
    } 

    server { 
     listen  80; 

     # You could put a server_name directive here (or multiple) if 
     # you have not setup wildcard DNS for *.dev domains 
     # See http://jessedearing.com/nodes/9-setting-up-wildcard-subdomains-on-os-x-10-6 

     # If we choose a root, then we can't switch things around easily 
     # Using /dev/null means that static assets are served through 
     # Rails instead, which for development is okay 
     root   /dev/null; 

     index  index.html index.htm; 

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

     location @dev { 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host    $http_host; 
     proxy_redirect off; 
     proxy_pass  http://dev; 
     } 
     error_page 500 502 503 504 /50x.html; 
    }    
} 
相关问题