【问题标题】:redirect 81 to 443 in nginx在 nginx 中将 81 重定向到 443
【发布时间】:2015-01-21 12:27:12
【问题描述】:

我正在尝试将所有流量作为 https 服务。但是,服务器位于 AWS ELB 后面。所以我在 ELB 上设置了一个监听器来引导 80 -> 81 和 443 -> 80 即所有 http 流量都转到 rails 服务器上的端口 81。 并且所有 https 流量都转到端口 80(在 ELB 上终止的 ssl) 我试图让 nginx 将所有端口 81 流量重定向到 https。 看起来很简单。

所以我在 sites_available 目录中有一个名为 redirect_to_ssl 的服务器块 它看起来像这样:

server {
      listen         81;
      server_name    redirect_to_ssl;
      return         301 https://$hostname$request_uri;
}

我已将此文件符号链接到启用站点

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

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

有什么想法吗?有没有另一种方法可以做我正在尝试用 AWS ELB 做的事情?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services nginx amazon-elb


    【解决方案1】:

    指令server_name 不是标签,它是虚拟服务器的名称,即它的值必须与要访问的服务器块的传入请求的 HTTP 主机头匹配。因此,它可能永远不会与您的设置中使用的任何 Host 实际主机标头匹配,并且永远无法访问。

    阅读documentation

    如果你使用负载均衡器,$hostname 的使用也很奇怪......

    【讨论】:

    • 感谢您的回复。我在没有 server_name 的情况下尝试了它。它从来没有奏效。所以我查看了当前网站,server_name 只是 ruby​​ 应用程序的文件夹名称。与提供服务的域无关?
    • 奇怪的是,当我在服务器上卷曲到 127.0.0.1:81 时,连接被拒绝
    • @Bernard 文件夹名称?您的设置已完全损坏,请获取some nginx basic knowledge,然后您将获得更清晰的视图。如果您的连接被拒绝,则 nginx 没有在该端口上侦听,因为它没有启动或配置错误或防火墙正在为该端口发送 TCP 重置。
    • 例如,ruby 应用程序被称为 my_app。并将其部署到其他地方名为 my_app 的文件夹中。在站点可用文件夹中有一个名为 my_app 的服务器块文件。在该服务器块文件中,server_name 是 my_app。不知道还能如何解释这一点?我没有设置这个 - 这是 Opsworks 的默认配置。而且我的设置并没有完全损坏:) 它运行良好。唯一不起作用的是重定向到端口 81。我后来发现这是由于该服务器的 AWS 安全组不允许端口 81。感谢您的帮助
    猜你喜欢
    • 2018-04-30
    • 2020-09-18
    • 2017-01-29
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2018-07-05
    • 2020-09-11
    • 2015-11-12
    相关资源
    最近更新 更多