Tôi đang ở trong một tình huống rất bất thường và tôi đã dành gần 8 giờ để cố gắng tìm ra vấn đề là gì.
thiết lập
Tôi có một máy chủ chạy Debian 11. Bên trong máy chủ này, tôi đã thiết lập một máy ảo CentOS với KVM. Máy ảo lưu trữ một ứng dụng web phức tạp phía sau máy chủ Apache. Giao diện mạng của KVM là NAT và do đó để truy cập ứng dụng web, tôi đã thiết lập quy tắc chuyển tiếp cổng bằng cách sử dụng libvirt
móc như được mô tả ở đây:
https://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
Thiết lập của tôi chuyển tiếp mọi kết nối đến cổng 443 tới máy chủ Apache trên Máy ảo và điều này đang hoạt động tốt.
Tôi cũng đã thiết lập một máy chủ Nginx trên máy chủ vì tôi định sử dụng nó làm proxy ngược. Tôi sẽ lưu trữ một ứng dụng khác trên máy chủ lưu trữ trên cổng 9000. Sử dụng Nginx cho proxy ngược, tôi dự định chuyển hướng tất cả các yêu cầu tới https://example.com
đến Máy ảo và tất cả các yêu cầu đến https://example.com/app/
đến ứng dụng web đang chạy trên cổng 9000.
Vấn đề
Tôi đã cài đặt máy chủ Nginx sau khi thiết lập Máy ảo và các quy tắc chuyển tiếp Cổng tương ứng của nó. Nhưng khi tôi cố chạy trang bắt đầu của máy chủ Nginx, nó không thể truy cập được. Tôi hiểu rằng cổng 443 được chuyển tiếp tới máy ảo. Vì vậy, tôi cố gắng tải với http://example.com
hy vọng nó sẽ tải trang bắt đầu Nginx trên cổng 80. Nhưng nó vẫn báo rằng trang web không thể truy cập được.
Những gì tôi đã cố gắng cho đến nay?
Tôi nghi ngờ rằng các quy tắc chuyển tiếp cổng từ máy chủ sang máy khách có thể là nguyên nhân cốt lõi ở đây. Vì vậy, tôi đã thay đổi quy tắc chuyển tiếp cổng từ cổng 443 thành 8000. Vì vậy, mọi yêu cầu tới cổng 8000 sẽ được chuyển tiếp tới máy chủ Apache trên máy ảo. Nhưng sau khi làm điều này, cổng 443 cũng không thể truy cập được.
Tôi đã cố xóa hoàn toàn iptables như được mô tả ở đây:
Xóa và đặt lại iptables trong Debian
Tuy nhiên, máy chủ Nginx vẫn không thể truy cập được.
Ngoài ra, rất lạ, sau khi xóa iptables, khi tôi cố gắng truy cập ứng dụng chạy trên cổng 9000 bằng http://example.com:9000
tôi nhận được một 400 Lỗi yêu cầu không hợp lệ
và khi tôi thay đổi giao thức thành https
, trang sẽ không thể truy cập được.
Bất kỳ lời khuyên sẽ rất hữu ích. Cảm ơn bạn.