1

我试图让我的 Rails 服务器监听 2 个不同的端口。向我提出的一种解决方案是使用 nginx。我安装了 nginxsudo passenger-install-nginx-module并将以下内容添加到 /etc/nginx/conf.d:

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 页面并正确加载。然后我开始使用 启动我的 rails 应用程序passenger start -e production,这导致它在端口 3000 上以独立的 phusion 乘客模式运行。我转到 myapp.com:3000 并获得了该应用程序。但是, myapp:80 和 myapp:10000 仍然不起作用。我对如何让我的 nginx 指向我正在运行的 rails 服务器感到困惑。我这样做完全错了吗?谢谢!

4

1 回答 1

0

使用此https://gist.github.com/jeffrafter/1229497将 nginx 设置为转发到我的 rails 服务器

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;
    }            
}
于 2013-06-21T21:34:07.533 回答