2013-06-21 59 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; 
    }    
} 
相關問題