我有一个基于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
下提供我的静态网站。
我做错了什么/失踪了?
此致 菲利克斯