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

时间:2019-03-23 16:28:59

标签: php laravel nginx redirect https

我想问一下HTTP-to-HTTPS重定向。我们知道WWW-to-none-WWW重定向是通过从Web服务器端进行重定向进行的。但是,当涉及到https重定向时,可以通过服务器端(Nginx etc...)和应用程序端(Middleware)两种方式完成。我想知道:

  1. 哪种方法有效且性能更高。
  2. 在同一服务器上考虑多个top-level域和sub-domain域的每种方式的利弊。

谢谢。

参考:

  1. Redirect WWW to non-WWW in Laravel - Stack overflow
  2. Redirect HTTP to HTTPS in Laravel - Stack overflow
  3. HTTP Request To HTTPS on nginx - nixCraft

1 个答案:

答案 0 :(得分:1)

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

就我个人而言,我总是在所有站点的nginx服务器{}块中执行此操作。我为一个域创建了一个conf文件,并具有2个server {}块,一个主要的块监听443以获取HTTPS流量,另一个很小的块仅识别(sub)域并重定向到HTTPS协议。

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

server {
    server_tokens off;
    listen 80;
    server_name sub.domain.com;
    return 301 https://sub.domain.com$request_uri;
}

关于基于服务器的优点,我想说的显而易见的是:

专业人士

  • 性能
  • 简单性

缺点

  • 需要root用户访问权限(至少对于nginx,Apache可以在.htaccess文件中进行访问,但这本身会降低性能)
  • 不能如此轻松地动态更改(灵活性吗?)