使用Nginx的Laravel SSL重定向循环

时间:2014-11-20 03:40:55

标签: php redirect nginx laravel-4 laravel-routing

我正在设置SSL以保护我的mydomain.com/admin区域,我使用Laravel使用Nginx,SSL正在运行,如果我转到https://www.mydomain.com它可以工作。但是,我重定向的尝试得到“此网页有重定向循环”错误。

我在Laravel

中设置了以下过滤器
Route::filter('secure', function () {
  if (! Request::secure()) {
      return Redirect::secure(
          Request::path(),
          in_array(Request::getMethod(), ['POST', 'PUT', 'DELETE']) ? 307 : 302
      );
  }
});

我成功通过以下方式路由到它:

Route::when('admin/*', 'secure');

这是我的Nginx配置:

server {

    listen       80;
    server_name  DOMAIN.com;
    return       301 http://www.DOMAIN.com$request_uri;

}

server {

    listen 80;

    listen 443;
    ssl on;

    server_name www.DOMAIN.com;

    ssl_certificate      /srv/ssl/www.DOMAIN.com.crt;
    ssl_certificate_key  /srv/ssl/www.DOMAIN.com.key;

    access_log /srv/www/www.DOMAIN.com/logs/access.log;

    error_log /srv/www/www.DOMAIN.com/logs/error.log;
    root /srv/www/www.DOMAIN.com/public;
    index index.php index.html index.htm;

    location / {
      try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_split_path_info ^(.+\.php)(/.*)$;
      include fastcgi_params;
      fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

      fastcgi_param  HTTPS  off;
      fastcgi_read_timeout  500;
    }

}

非常感谢....

1 个答案:

答案 0 :(得分:0)

很确定这是因为我有

fastcgi_param  HTTPS  off;

已更改为

fastcgi_param  HTTPS  on;

一切都运转良好