【问题标题】:Http to Https using Nginx in aws also redirects Ipv4在 aws 中使用 Nginx 的 Http 到 Https 也会重定向 Ipv4
【发布时间】:2018-07-04 13:39:25
【问题描述】:

我需要将 http 重定向到 https,我正在使用 Nginx 来做到这一点

我使用带有 ACM 推荐证书的负载均衡器。在路由 53 Ipv4 中使用

尝试从 /etc/nginx/sites-available/default 中的以下代码将 http 重定向到 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)

【问题讨论】:

  • nginx 中是否只有一个 server_name 设置?
  • 是的..我需要2个

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


【解决方案1】:

根据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 Forbidden 结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2011-03-29
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多