Laravel 5 和 Cloudflare SSL
Laravel 5 and Cloudflare SSL
嗯,今天我第一次决定在我的 web 项目上使用 ssl
。首先,我在 cloudflare.com 中配置了我的域。然后我在cloudflare中打开了页面规则,自动将网站重定向到https。
http://*example.com/*
为了确保它能正常工作,我在 public_html 中添加了简单的 index.php
并且它成功了。我的意思是,当我进入该网站时,https
处于活动状态并且该网站向我显示了著名的词:"Hello World"
之后我将我的 Laravel 项目上传到网络服务器并配置了虚拟主机。我使用 nginx 服务器。
server {
listen 80;
root /home/user/www/example.com/public_html/public;
index index.php index.html index.htm;
server_name example.com
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
include fastcgi_params;
}
}
嗯,当我使用 https
进入网站时,Laravel 路由不起作用。此外,服务器未读取我的 css 和 js 文件。
然后我关闭了 cloudflare 的页面规则,网站在 http
上运行良好。
我尝试使用 listen 443
配置服务器,使用 ssl on
命令,但没有任何结果。
此外,我发现 link 关于 cloudflare 的 laravel 5。但不确定,这就是我想要的。
任何帮助,将不胜感激。
解决方案
强制所有路由到 https
我决定制作一个中间件并在所有路由中使用它。
namespace App\Http\Middleware;
use Closure;
class HttpsProtocol
{
public function handle($request, Closure $next)
{
$request->setTrustedProxies( [ $request->getClientIp() ] );
if (!$request->secure()) {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
嗯,今天我第一次决定在我的 web 项目上使用 ssl
。首先,我在 cloudflare.com 中配置了我的域。然后我在cloudflare中打开了页面规则,自动将网站重定向到https。
http://*example.com/*
为了确保它能正常工作,我在 public_html 中添加了简单的 index.php
并且它成功了。我的意思是,当我进入该网站时,https
处于活动状态并且该网站向我显示了著名的词:"Hello World"
之后我将我的 Laravel 项目上传到网络服务器并配置了虚拟主机。我使用 nginx 服务器。
server {
listen 80;
root /home/user/www/example.com/public_html/public;
index index.php index.html index.htm;
server_name example.com
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
include fastcgi_params;
}
}
嗯,当我使用 https
进入网站时,Laravel 路由不起作用。此外,服务器未读取我的 css 和 js 文件。
然后我关闭了 cloudflare 的页面规则,网站在 http
上运行良好。
我尝试使用 listen 443
配置服务器,使用 ssl on
命令,但没有任何结果。
此外,我发现 link 关于 cloudflare 的 laravel 5。但不确定,这就是我想要的。
任何帮助,将不胜感激。
解决方案
强制所有路由到 https
我决定制作一个中间件并在所有路由中使用它。
namespace App\Http\Middleware;
use Closure;
class HttpsProtocol
{
public function handle($request, Closure $next)
{
$request->setTrustedProxies( [ $request->getClientIp() ] );
if (!$request->secure()) {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}