Tôi đang cố thiết lập proxy ngược cho máy chủ api của mình nhưng nhận được trang lỗi 404.
Bối cảnh:
Trong khi thiết lập ứng dụng Reac.js và cố gắng tìm giải pháp cho vấn đề CORS, tôi đã quyết định sử dụng proxy ngược (proxy pass) với nginx để gọi nội bộ máy chủ api và lừa trình duyệt nghĩ rằng api đang ở trên cùng một miền.
Đây là thiết lập dự định của tôi:
https://example.com trỏ đến thư mục trang web
https://example.com/api gọi url api đang nghe nội bộ http://127.0.0.1:1234 qua proxy ngược nginx
Tôi sử dụng hestia cp có nginx phía trước apache làm proxy ngược.
Vấn đề
Nếu tôi sử dụng lynx để gọi trực tiếp http://127.0.0.1:1234, tôi nhận được phản hồi chính xác từ máy chủ api của mình.
Tuy nhiên khi sử dụng qua proxy pass trên url https://example.com/api, tôi nhận được trang lỗi 404.
Tệp cấu hình Nginx
Đây là thiết lập nginx.ssl.conf của tôi cho example.com
vị trí /api/ {
proxy_pass http://127.0.0.1:1234;
access_log /var/log/apache2/domains/example.com-api.log tùy chỉnh;
access_log /var/log/apache2/domains/example.com-api.bytes byte;
}
Đây là thiết lập nginx.conf của tôi cho miền api.com của tôi, nghe trên 127.0.0.1, cổng 1234
người phục vụ {
nghe 127.0.0.1:1234;
tên_máy chủ 127.0.0.1;
địa điểm / {
proxy_pass http://10.0.10.55:8080;
vị trí ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc |docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3 |mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
gốc /home/user/web/api.com/public_html;
access_log /var/log/apache2/domains/api.com.log kết hợp;
access_log /var/log/apache2/domains/api.com.bytes byte;
hết hạn tối đa;
try_files $uri @fallback;
}
} vị trí /lỗi/ {
bí danh /home/user/web/api.com/document_errors/;
}
vị trí @fallback {
proxy_pass http://10.0.10.55:8080;
}
vị trí ~ /\.ht {return 404;}
vị trí ~ /\.svn/ {return 404;}
vị trí ~ /\.git/ {return 404;}
vị trí ~ /\.hg/ {return 404;}
vị trí ~ /\.bzr/ {return 404;} }
Ai đó có thể giúp tôi gỡ lỗi hoặc khắc phục sự cố này không?
Không thể thấy bất cứ điều gì nổi bật trong nhật ký nhưng có lẽ không biết phải tìm gì.
Có vẻ như cuộc gọi qua proxy nginx không đến được apache.
Tôi đã đọc rằng lynx gọi trực tiếp apache, nếu tôi bỏ qua nginx nếu tôi sử dụng kết hợp url/cổng 127.0.0.1:1234.
Rất cám ơn trước