Bài đăng

Đang hiển thị bài đăng từ tháng hai, 2016

[Notes] CloudFlare SSL Proxy và PHP Website.

Trường hợp tôi đang gặp phải:
Client → CloudFlare (Flexible SSL, Static Caching) → Nginx (php-fpm)
Một số yêu cầu tôi đã xử lý:

[+] Chuyển các truy cập HTTP sang HTTPS

Sau khi CloudFlare nhận được HTTP Request từ Client sẽ thêm các Headers sau trước khi Forward vào Nginx

Cf-Visitor : { "scheme": "http"} X-Forwarded-Proto: http
[+] Có thể sử dụng một trong 2 headers này dùng làm patern để redirect, ví dụ:
if ($http_cf_visitor ~ '{"scheme":"http"}') { return 301 https://$server_name$request_uri; }
Hoặc

if ($http_x_forwarded_proto = "http") { return 301 https://$server_name$request_uri; }
[+] CloudFlare Caching và Redirect Loop khi chuyển request sang HTTPS

Khi sử dụng phương pháp Redirect sang HTTPS, nếu Static Caching của CloudFlare đang được mở thì mặc định ta sẽ gặp trường hợp như sau (ví dụ đối với các tập tin image, js, css):
- Client gửi HTTPS đến /image_abc.jpeg : Truy cập bình thường
- Client gửi HTTP đến http:…