Cài SSL cho WordPress ở micro service


Vướng mắc khi cài SSL ở microservice

Mình đã sử dụng Cpanel, Plesk, một số VPS, … và việc setup SSL cho các website nói chung và các site WordPress nói riêng không mấy khó khăn.

Vấn đề chỉ nảy sinh khi mình muốn khôi phục lại trang blog cá nhân mà lại không sử dụng các hệ thống cũ. Cụ thể là vừa rồi mình nhảy việc sang công ty có sử dụng hệ thống microservice trên GCP chứ không sử dụng các hệ thống mình đã quen. Thế là mình dự định setup lại blog này (sử dụng WordPress) chạy trên VPC của công ty đang có ở Google-cloud.

Domain được gắn qua cloudflare và sử dụng luôn SSL của cloudflare. Vấn đề phát sinh ở đây: client kết nối đến site qua HTTPS sử dụng của cloudflare mà cloudflare lại gọi HTTP về proxy và proxy cũng gọi về port 80 của docker chạy WordPress. Cũng cần nói thêm là bạn system admin cho rằng từ cloudflare gọi về proxy (và proxy gọi local) bằng http sẽ nhanh hơn là sử dụng https. Do đó, trên hệ thống từ cloudflare->proxy->docker WordPress chỉ sử dụng giao thức http (port 80).

Với các site trong hệ thống bên mình thì khỏi nói, vẫn chạy bình thường. Các site dùng laravel, cakephp, nodejs … đều chạy SSL của cloudflare và không cần cấu hình gì vào http/https trong proxy hay docker (cũng nói luôn là mấy cái này mình không rành nên chỉ viết lại theo bạn system admin chỉ dẫn).

WordPress thì lại khác, do nó fix domain ở trong database (hoặc cấu hình fix ở wp-config.php) nên nếu để là http thì khi trả image/js/css .. sẽ không nhận – lỗi Mixed Content. Mà nếu cho https ngay thì proxy sẽ không gọi được vào docker WordPress này (sử dụng http từ cloudflare->proxy->docker).

Giải pháp

Mình đã khắc phục được vấn đề trên bằng cách sử dụng plugin có tên là Really Simple SSL. Các bạn có thể làm như sau: trước tiên, cần phải cài đặt và kích hoạt plugin Really Simple SSL. Sau khi kích hoạt, vào Settings » SSL. Plugin sẽ tự động phát hiện SSL (như của mình là ở cloudflare) và tiến hành thiết lập cấu hình website để sử dụng HTTPS.

Really Simple SSL sẽ xử lý mọi thứ bao gồm cả lỗi Mixed Content, 301 redirect,..

Lưu ý: cần cho phép edit file wp-config.php (chmod 755 hoặc 777 – chỉnh xong thì chmod lại).

Hình ảnh minh họa Really simple SSL

Cài đặt và cấu hình xong thì hiện tại site của mình đã sử dụng SSL bình thường rồi, các bạn đọc được bài viết và xem được hình ảnh ở trên thì tức là đã OK. Mình cũng tìm thấy nhiều giải pháp khác, nhưng thấy phức tạp và phải can thiệp vào hệ thống nên không tìm hiểu thêm, với mình, giải pháp đơn giản này đã OK rồi!