如何配置除Rails应用程序之外的Nginx子域

时间:2013-04-07 13:39:04

标签: ruby-on-rails apache nginx subdomain

我有一个基于Rails的API,它在后端Nginx服务器上运行并且稳定。服务器无法从外部访问,它之前有一个Apache作为代理。 API可通过子域:api.myapp.net获得。

现在我想通过第二个子域服务器静态单页面应用程序:alpha.myapp.net。子域已配置,具有正确的A-Record。 Apache为api代理流量。和阿尔法。使用这个简单的配置到正确的后端服务器:

<VirtualHost *:80>
    ServerAdmin webmaster@myapp.net
    ServerName myapp.net
    ServerAlias myapp.net *.myapp.net

    DirectoryIndex index.html

    RewriteEngine On

    RewriteLog /var/log/apache2/rewrite.log
    RewriteLogLevel 9

    RewriteCond %{HTTP_HOST} !^(alpha\.|api\.)?myapp\.net$
    RewriteRule ^(.*)$ http://myapp.net$1 [L,R=301]

    ProxyPass / http://192.168.1.145/
    ProxyPassReverse / http://192.168.1.145/

    ErrorLog /var/log/apache2/error.log

    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature Off
</VirtualHost>

Nginx的配置如下:

worker_processes  8;

events {
        worker_connections  1024;
}

http {
        passenger_root /usr/local/rvm/gems/ruby-1.9.2-p320/gems/passenger-3.0.17;
        passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p320/ruby;

        include       mime.types;
        default_type  application/octet-stream;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay off;

        gzip on;
        gzip_http_version 1.0;
        gzip_proxied any;
        gzip_min_length 500;
        gzip_disable "MSIE [1-6]\.";
        gzip_types application/json text/plain text/xml text/css
                text/comma-separated-values
                text/javascript application/x-javascript
                application/atom+xml;

        upstream myapp {
                server localhost:80;

        server {
                listen 80;
                server_name api.myapp.net;
                passenger_enabled on;
                root /home/deployer/apps/myapp/current/public;
        }

        server {
                listen 80;
                server_name alpha.myapp.net;
                passenger_enabled off;
                root /home/deployer/apps/client/current;
        }
}

现在发生的是,所有到alpha.myapp.net的流量都会到达为api提供服务的Rails应用程序。我永远不会在/home/deployer/apps/client/current下提供我的静态网站。

我做错了什么/失踪了?

此致 菲利克斯

1 个答案:

答案 0 :(得分:0)

我找到了答案。问题不是Nginx配置,也不是Apaches配置。答案是here