【问题标题】:https to http redirect not working in nginx configuration using rewritehttps 到 http 重定向在使用重写的 nginx 配置中不起作用
【发布时间】:2017-02-06 06:17:33
【问题描述】:

为了在我们的应用程序中分配负载并实现安全性,我们从亚马逊获取了弹性负载均衡器,并在其上配置了 SSL。现在,从 http 到 https 的重定向在服务器或 ELB 上附加的实例上的 nginx 配置中不起作用。 以下是 nginx 配置:-

 server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        server_name new.example.com;
        access_log /var/log/nginx/domain-access.log;
        location / {
                proxy_read_timeout 90;
                proxy_connect_timeout 90;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://127.0.0.1:8000;
              }
}

首先,服务器不支持 https URL,然后我在配置中添加了一些代理设置,但现在的问题是重定向不起作用我在 ngnix 配置中使用以下命令将 http 重定向到 https:-

#version 1   
    server{
      return         301 https://$server_name$request_uri;
    }

#version 2   
    server {
     rewrite ^(.*) https://$host$1 permanent;
    }

部署在服务器上的应用程序是使用 django 框架构建的。

【问题讨论】:

  • 您正在端口 80 上侦听(带有以上配置),但 https 请求转到端口 443;可能是这个问题吗?
  • 不,在这两种情况下,请求都来自端口 80。

标签: django python-2.7 redirect nginx


【解决方案1】:

当我做了类似的事情后,我设置了 ELB HTTPS 以重定向到节点上的 HTTP 端口 80。然后我在节点上设置了第二个 nginx 虚拟主机,例如在端口 81 上,它指示返回 301 https://$server_name$request_uri;并设置 ELB http 监听器重定向到该端口(其中 $server_name 显然指向 ELB 的域 CNAME)

然后我确保不能使用安全组从我的 VPC 外部访问 ELB 后面的实例。

【讨论】:

    【解决方案2】:

    如果你使用 Django,你可以用它来做重定向,这给了很多灵活性,比如只在生产服务器上启用 HTTPS 重定向或选择从哪些 url 重定向:

    # Honor the 'X-Forwarded-Proto' header for request.is_secure()
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
    
    # Redirect to HTTPS in production
    SECURE_SSL_REDIRECT = not DEBUG
    
    # Disable redirection on this urls
    SECURE_REDIRECT_EXEMPT = [
        '^legacy/api/',
    ]
    

    【讨论】:

    • 谢谢,但不幸的是它不适合我,如果你能给我一些其他的解决方案,将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2018-03-27
    • 2019-05-23
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多