在aws中使用Nginx进行Http到Https也重定向Ipv4

时间:2018-01-25 10:26:43

标签: node.js amazon-web-services nginx amazon-route53 elastic-load-balancer

我需要将http重定向到https,我正在使用Nginx来执行此操作

我使用负载均衡器和ACM推荐的证书。路由53使用Ipv4

尝试将http从/ etc / nginx / sites-available / default中的代码重定向到https

server {

listen 80;

  server_name mysite.com www.mysite.com;

    location / {
    if ($http_x_forwarded_proto != 'https') {
       rewrite ^ https://$host$request_uri? permanent;
   }
         proxy_pass http://172.x1.x5.xx6:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
     }
}

我面临的问题是公共ipv4(公共IP)也被重定向到https而无法访问我的域

如何不重定向ipv4(公共IP)

1 个答案:

答案 0 :(得分:0)

根据documentation

如果您只使用server_name指令

  

如果其值与任何服务器名称不匹配,或者请求不匹配   根本包含此标头字段,然后nginx将请求路由到   此端口的默认服务器。在上面的配置中,   默认服务器是第一个 - 这是nginx的标准默认值   行为。它也可以明确地设置应该是哪个服务器   默认情况下,使用listen指令中的default_server参数...

所以,如果你有这样的事情:

server {
    listen      80 default_server;
    return 403;
}
server {
    listen      443 default_server;
    return 403;
}

然后,当一个请求进入并且与您的server_name不符时,它将默认为上述server块并返回403禁止的结果。