Php 将HTTP重定向到HTTPS(中间件重定向vs Nginx)

Php 将HTTP重定向到HTTPS(中间件重定向vs Nginx),php,laravel,nginx,redirect,https,Php,Laravel,Nginx,Redirect,Https,我想问一下HTTP到HTTPS的重定向。正如我们所知,WWW到无WWW重定向是通过从web服务器端重定向来实现的。但是,当涉及到https重定向时,它可以通过两种方式完成,服务器端(Nginx等…)和应用程序端(中间件)。我想知道: 以下哪种方法有效且性能更好 考虑到同一服务器上的多个顶级域和子域域,每种方法的优缺点 多谢各位 参考: 这里基于服务器的重定向应该更有效,因为它发生在加载任何应用程序代码之前 就我个人而言,我总是在所有站点的nginx服务器{}块中这样做。我为一个域创建了一个

我想问一下HTTP到HTTPS的重定向。正如我们所知,
WWW到无WWW
重定向是通过从web服务器端重定向来实现的。但是,当涉及到https重定向时,它可以通过两种方式完成,服务器端(
Nginx等…
)和应用程序端(
中间件
)。我想知道:

  • 以下哪种方法有效且性能更好
  • 考虑到同一服务器上的多个
    顶级
    域和
    子域
    域,每种方法的优缺点
  • 多谢各位

    参考:


  • 这里基于服务器的重定向应该更有效,因为它发生在加载任何应用程序代码之前

    就我个人而言,我总是在所有站点的nginx服务器{}块中这样做。我为一个域创建了一个conf文件,有两个服务器{}块,一个主块监听443上的HTTPS流量,另一个小块只识别(子)域并重定向到HTTPS协议

    下面是我针对特定子域的重定向服务器{}块示例:

    server {
        server_tokens off;
        listen 80;
        server_name sub.domain.com;
        return 301 https://sub.domain.com$request_uri;
    }
    
    至于基于服务器的优点和缺点,我想说的显而易见的是:

    赞成的意见
    • 演出
    • 简朴
    欺骗
    • 需要根访问权限(至少对于nginx,Apache您可以在.htaccess文件中完成,但这本身就有性能成本)
    • 不能如此轻松地改变事情(灵活性?)

    回答得很好。但有一个问题;如果我在服务器端执行重定向,除了更改
    APP\u URL
    环境变量外,我是否需要更改Laravel项目中的任何内容(忽略我安装的第三方软件包)?该应用程序将自动将我的所有路由和URL更改为https?只要你没有使用路由/资产的完整路径(图像/css/js等),并且只使用URI路径,例如
    /path/to/something
    ,那么除了您注意到的
    APP\u URL
    之外,不需要做任何更改(我在HTTP下开发,但产品总是HTTPS)。关于资产,如果您也指定了它们的(子)域,您可以删除协议,例如:
    ,然后使用当前协议(HTTP或HTTPS,无论站点被访问为什么)并按照完美的方式加载。我会等着看是否有人愿意回答。如果我没有得到任何东西,你的就会被接受。非常感谢你完整的答案。现在,这个答案看起来非常适合我。谢谢