Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用capistrano将带有子域的Rails部署到nginx/unicorn设置——如何?_Ruby On Rails_Deployment_Nginx_Subdomain_Unicorn - Fatal编程技术网

Ruby on rails 使用capistrano将带有子域的Rails部署到nginx/unicorn设置——如何?

Ruby on rails 使用capistrano将带有子域的Rails部署到nginx/unicorn设置——如何?,ruby-on-rails,deployment,nginx,subdomain,unicorn,Ruby On Rails,Deployment,Nginx,Subdomain,Unicorn,我一直在关注Ryan B的VPS部署railscast: 他建议使用的nginx.conf文件不适用于子域。这就是他所展示的: upstream unicorn { server unix:/tmp/unicorn.blog.sock fail_timeout=0; } server { listen 80 default deferred; # server_name example.com; root /home/deployer/apps/<app name>

我一直在关注Ryan B的VPS部署railscast:

他建议使用的nginx.conf文件不适用于子域。这就是他所展示的:

upstream unicorn {
  server unix:/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/deployer/apps/<app name>/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
上游独角兽{
服务器unix:/tmp/unicorn.blog.sock失败\u超时=0;
}
服务器{
倾听80个默认延迟;
#server_name example.com;
root/home/deployer/apps//current/public;
地点^ ~/资产/{
gzip_静态开启;
最大值;
添加_头缓存控制公共;
}
试试看文件$uri/index.html$uri@unicorn;
地点@独角兽{
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For;
代理设置头主机$http\U主机;
代理_重定向关闭;
代理通行证http://unicorn;
}
错误\u第500页502 503 504/500.html;
客户机最大机身尺寸4G;
保持激活超时10;
}

有人知道如何设置以支持子域吗?

您可以取消注释行:

#server_name example.com

将example.com替换为您的域并添加:

server_name example.com*.example.com

server\u name example.com blog.example.com


现在,对域和子域的所有请求都将转到rails,您可以取消注释行:

#server_name example.com

将example.com替换为您的域并添加:

server_name example.com*.example.com

server\u name example.com blog.example.com

现在,所有对域和子域的请求都将转到rails(至少在linode.com上是这样),处理通配符子域非常简单。您只需将
*
主机添加到a记录

此外,在nginix中,我所做的被替换为:

# server_name example.com;
与:

我甚至不确定这是否需要

我的实际问题与主机或nginx无关。我的情况是,我在注册期间使用了一个随机散列URL作为安全令牌(因此用户不能劫持现有子域),但我使用的散列类型有问题,因此我需要修改它

我没有看到任何错误,只是被重定向回注册页面——这是哈希URL出现问题/不匹配时的正确行为

不管怎样,一旦我解决了这个问题,整个子域的事情就不是问题了

希望这能帮助其他使用散列URL、子域的人,并且通常是部署新手

干杯。

事实证明(至少在linode.com上),处理通配符子域非常简单。您只需将
*
主机添加到a记录

此外,在nginix中,我所做的被替换为:

# server_name example.com;
与:

我甚至不确定这是否需要

我的实际问题与主机或nginx无关。我的情况是,我在注册期间使用了一个随机散列URL作为安全令牌(因此用户不能劫持现有子域),但我使用的散列类型有问题,因此我需要修改它

我没有看到任何错误,只是被重定向回注册页面——这是哈希URL出现问题/不匹配时的正确行为

不管怎样,一旦我解决了这个问题,整个子域的事情就不是问题了

希望这能帮助其他使用散列URL、子域的人,并且通常是部署新手

干杯