Ruby on rails 在nginx中将81重定向到443

Ruby on rails 在nginx中将81重定向到443,ruby-on-rails,amazon-web-services,nginx,amazon-elb,Ruby On Rails,Amazon Web Services,Nginx,Amazon Elb,我正在尝试将所有流量作为https服务。但是,服务器位于AWS ELB后面。因此,我在ELB上设置了一个监听器,用于指示80->81和443->80 i、 e.所有http通信流都会到达rails服务器上的端口81。 并且所有https流量都会传输到端口80(ssl在ELB上终止) 我正在尝试让nginx将所有端口81流量重定向到https。 看起来很简单 所以我在sites\u available目录中有一个名为redirect\u to\u ssl的服务器块 看起来是这样的: server

我正在尝试将所有流量作为https服务。但是,服务器位于AWS ELB后面。因此,我在ELB上设置了一个监听器,用于指示80->81和443->80 i、 e.所有http通信流都会到达rails服务器上的端口81。 并且所有https流量都会传输到端口80(ssl在ELB上终止) 我正在尝试让nginx将所有端口81流量重定向到https。 看起来很简单

所以我在sites\u available目录中有一个名为redirect\u to\u ssl的服务器块 看起来是这样的:

server {
      listen         81;
      server_name    redirect_to_ssl;
      return         301 https://$hostname$request_uri;
}
我已将此文件符号链接到已启用的站点

我已经重新加载了nginx的配置

但当我尝试卷曲localhost:81时,连接被拒绝了。当我尝试从ELB外部浏览网站时,它什么也不做


有什么想法吗?有没有其他方法可以实现我对AWS ELB的操作?

指令
server\u name
不是标签,而是虚拟服务器的名称,即其值必须与要访问的服务器块的输入请求的HTTP主机头相匹配。因此,它可能永远不会与您的设置中使用的任何主机实际主机头匹配,并且永远不会被访问

读这本书


如果使用负载平衡器,
$hostname
的使用也很奇怪…

谢谢您的回复。我在没有服务器名称的情况下尝试了它。它从来都不起作用。所以我查看了当前的网站,它的服务器名就是ruby应用程序的文件夹名。与所服务的域没有关系?奇怪的是,当我在服务器上执行到127.0.0.1的卷曲时,连接被拒绝:81@Bernard文件夹名?你的设置完全被破坏了,你会有一个更清晰的视图。如果连接被拒绝,则nginx不会侦听该端口,因为它没有启动,或者配置不正确,或者防火墙正在为该端口发送TCP重置。例如,ruby应用程序称为my_应用程序。并将其部署到名为my_app的文件夹中。在sites available文件夹中有一个名为my_app的服务器块文件。在这个服务器块文件中,服务器名是我的应用程序。不知道该怎么解释?我没有设置这个-这是Opsworks的默认配置。我的设置并没有完全中断:)它工作得很好。唯一不起作用的是重定向到端口81。我后来发现这是由于该服务器的AWS安全组不允许端口81。谢谢你的帮助