Xử lý vấn đề chứng thực API cho ChatWoot qua Nginx Proxy

Vấn đề: Header API không được chuyển tiếp qua Nginx proxy

Khi thiết lập Nginx làm proxy cho Chatwoot, các header xác thực đặc biệt như api_access_token không được chuyển tiếp mặc định. Điều này dẫn đến không thể đăng nhập hoặc thực hiện các thao tác API qua proxy.

Nguyên nhân

Mặc định, Nginx chỉ chuyển tiếp một số header HTTP phổ biến như Authorization. Tuy nhiên, Chatwoot sử dụng header tùy chỉnh api_access_token cho xác thực, và Nginx có 2 vấn đề:

  1. Không chuyển tiếp tự động các header tùy chỉnh
  2. Mặc định không chấp nhận header có dấu gạch dưới (_) trong tên

Các giải pháp thử nghiệm không thành công

Bạn đã thử các phương pháp sau nhưng chưa thành công:


proxy_set_header api_access_token $http_api_access_token;
proxy_pass_header api_access_token;


Giải pháp hoàn chỉnh

Vấn đề chính nằm ở chỗ Nginx mặc định không chấp nhận header có dấu gạch dưới. Thêm cấu hình sau vào file nginx.conf hoặc trong block http/server:


# Cho phép header có dấu gạch dưới
underscores_in_headers on;


Cấu hình hoàn chỉnh tham khảo


server {
    listen 80;
    server_name chatwoot.yourdomain.com;

# Cho phép header có dấu gạch dưới - ĐIỂM QUAN TRỌNG
    underscores_in_headers on;

    location / {
        proxy_pass <http://localhost:3000>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

# Chuyển tiếp header xác thực Chatwoot
        proxy_set_header api_access_token $http_api_access_token;
        proxy_pass_header api_access_token;

# Các cài đặt khác cho websocket nếu cần
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}


Lưu ý

  1. Cài đặt underscores_in_headers on có thể đặt ở cấp http, server hoặc location
  2. Sau khi thay đổi cấu hình, nhớ reload Nginx: sudo nginx -t && sudo systemctl reload nginx
  3. Kiểm tra logs Nginx nếu vẫn gặp vấn đề: sudo tail -f /var/log/nginx/error.log

Hy vọng cấu hình này giúp bạn và những người khác giải quyết vấn đề header xác thực khi sử dụng Nginx làm proxy cho Chatwoot!

Đặng Ngọc Bình
Đặng Ngọc Bình

Coder đã ngộ đạo No-Code!

Bài viết: 57
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

0
Rất thích suy nghĩ của bạn, hãy bình luận.x