在AWS Load Balancer之后使用Nginx将http重定向到https

时间:2019-02-07 06:14:57

标签: amazon-web-services http nginx https network-protocols

我搜寻了很多东西,我觉得这是我项目的最后障碍。我正在尝试将所有http流量重定向到https。

当前,当键入domain.info时,它将重定向到https://domain.info:80并返回ERR_SSL_PROTOCOL_ERROR

但是用443代替80可以使我的网页正常。

我的服务器也位于负载均衡器的后面,我的证书在LB中,服务器中没有。我正在使用NGINX作为我的网络服务器。基本上这是我的设置:

user> https>负载均衡器> http>服务器

非常感谢!

2 个答案:

答案 0 :(得分:0)

  1. 首先,捕获所有传入的HTTP:
server {
   listen 80 default_server;
   server_name _;
   return ....;
}
  1. 然后永久重定向到HTTPS
server {
   listen 80 default_server;
   server_name _;
   return 301 https://$host$request_uri;
}

或...

server {
    listen 443 ssl default_server;
    server_name foo.com;
}

server {
    listen 443 ssl default_server;
    server_name foo.com;
}

答案 1 :(得分:0)

您可以直接在负载均衡器中添加重定向规则,您尝试过使用它吗?

在负载平衡器侦听器中,更新HTTP:80的默认规则,并按如下所示进行配置:

HTTP 80: default action
IF
Requests otherwise not routed
THEN
Redirect to https://#{host}:443/#{path}?#{query}
Status code:HTTP_301