Tôi đang chạy một dịch vụ trên bộ chứa docker.
Dịch vụ được hiển thị trên một cổng nhất định (ví dụ: 12345).
Ngoài ra, tôi đã thêm một proxy ngược nginx để có thêm chức năng như HTTPS và HTTP/2.
cấu hình nginx như sau:
worker_processes tự động;
http {
gửi tệp trên;
bật gzip;
người phục vụ {
nghe 443 ssl http2;
nghe [::]:443 ssl ipv6only=on http2;
server_name example.com
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # được quản lý bởi Certbot
bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
địa điểm / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Máy chủ lưu trữ $host;
proxy_pass http://localhost:12345/;
tắt proxy_buffering;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối "nâng cấp";
}
}
}
Không có bất kỳ tường lửa nào, nó vẫn hoạt động bình thường (tôi có thể truy cập dịch vụ trên mạng LAN trên cả cổng 443 và cổng 12345).
Tôi có tường lửa với phụ trợ nftables được định cấu hình như sau:
docker (đang hoạt động)
mục tiêu: CHẤP NHẬN
icmp-block-đảo ngược: không
giao diện: br-06ceff0ffa49 docker0
nguồn:
dịch vụ:
cổng: 12345/tcp 12345/udp
giao thức:
về phía trước: có
hóa trang: không
cổng chuyển tiếp:
cổng nguồn:
khối icmp:
Quy tắc phong phú:
công khai (đang hoạt động)
mục tiêu: mặc định
icmp-block-đảo ngược: không
giao diện: eth0 wlan0
nguồn:
dịch vụ: http https ssh
cổng: 12345/tcp
giao thức:
về phía trước: có
hóa trang: không
cổng chuyển tiếp:
cổng nguồn:
khối icmp:
Quy tắc phong phú:
đáng tin cậy (hoạt động)
mục tiêu: CHẤP NHẬN
icmp-block-đảo ngược: không
giao diện: lo
nguồn:
dịch vụ:
cổng: 12345/tcp
giao thức:
về phía trước: có
hóa trang: không
cổng chuyển tiếp:
cổng nguồn:
khối icmp:
Quy tắc phong phú:
Khi tôi cố gắng truy cập dịch vụ từ PC trên mạng LAN với cấu hình này, tôi có thể truy cập trực tiếp qua cổng 12345, nhưng nếu tôi thử truy cập qua nginx thì tôi sẽ hết thời gian chờ.
Cảm giác của tôi là tường lửa đang ngăn nginx trao đổi dữ liệu với vùng chứa, nhưng tôi không biết mình đang thiếu gì để làm cho nó hoạt động.
Tôi có thể thiếu gì?