如何将Heroku上托管的nextjs应用程序从http重定向到https?

时间:2019-11-23 12:25:01

标签: redirect heroku https next.js

我在Heroku上托管了nextjs应用。该应用没有自定义服务器,直接访问https URL即可。

但是,如果用户直接访问http URL,我想将其重定向到https页面。

这几天实现这一目标的最佳方法是什么?

here中提到了一个非常棘手的解决方案,但是我感觉有更好的解决方案。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Edge addon in Heroku将CloudFront CDN放置在应用程序的前面,该CDN可以处理重定向。这将强制实施HTTPS,即Edge会自动将HTTP请求重定向到HTTPS。

来源: https://elements.heroku.com/addons/edge

答案 1 :(得分:0)

如果您不需要插件,您可以使用带有自定义 nginx 配置的 heroku-community/nginx buildpack,该配置强制使用 HTTPS:

http {
  server {
    listen <%= ENV["PORT"] %>;
    server_name _;
    keepalive_timeout 5;

    location / {

      <% if ENV['NGINX_SKIP_HTTPS_PROXY'] == 'true' %>
        if ($http_x_forwarded_proto != "https") {
          return 301 https://$host$request_uri;
        }
      <% end %>

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://localhost:3000; #next serve listens here and receives nginx requests
    }
  }
}

您可以在 this post 中找到完整的配置详细信息。