Cùng một tệp PHP có thể dùng proxy trong terminal và kết nối trực tiếp khi được PHP-FPM phục vụ. Hãy bắt đầu bằng việc so sánh các tiến trình chạy nó. Terminal của bạn khởi chạy PHP với môi trường shell; máy chủ web gửi yêu cầu đến các worker mà FPM đã tạo.

Xem môi trường của worker

Cấu hình pool FPM cung cấp clear_env và các mục env[NAME] rõ ràng. Khi bật dọn dẹp môi trường, việc xuất một biến trong shell đăng nhập không đặt biến đó vào worker. Các mục trong pool có thể truyền những biến được chọn:

env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080

Áp dụng thay đổi cấu hình thông qua quy trình tải lại FPM thông thường của triển khai bạn. Đặt giá trị vào pool thực sự phục vụ ứng dụng. Một pool, tài khoản dịch vụ hoặc container khác có thể giải thích vì sao một chỉnh sửa có vẻ đúng lại không có tác dụng.

Khi gỡ lỗi một yêu cầu đang chạy, chỉ kiểm tra xem các cài đặt mong đợi có tồn tại hay không. Một trang chẩn đoán công khai in toàn bộ giá trị môi trường có thể làm lộ thông tin đăng nhập proxy cùng những bí mật không liên quan.

Sau đó kiểm tra vận chuyển PHP

libcurl có xử lý môi trường proxy được ghi lại; một handle PHP cURL rõ ràng cũng có các tùy chọn riêng. Lớp bao luồng HTTP của PHP có cấu hình ngữ cảnh riêng. Việc cung cấp biến cho worker không khiến mọi API mạng của PHP dùng chúng.

Điều đó cho một kiểm tra hai phần hữu ích: xác nhận worker đã nhận gì, rồi xác nhận cách client HTTP được chọn đọc cài đặt proxy. Nếu CLI và FPM nhận cùng giá trị nhưng vẫn hành xử khác nhau, hãy so sánh tùy chọn client và quy tắc bỏ qua tiếp theo. Việc sửa hồ sơ shell nhiều lần không thể giải quyết khác biệt bên trong client HTTP của worker.

Bài viết liên quan