Tôi có hai thiết lập proxy nginx trên máy của mình, một để hủy kích hoạt SSL và cái còn lại để thực hiện ủy quyền dành riêng cho ứng dụng (chỉ cái thứ hai được kiểm soát theo phiên bản). Khi tôi chỉ có một proxy, tôi có thể tạo kết nối websocket thành công, nhưng sau khi chuyển sang hai proxy, tất cả các yêu cầu nâng cấp websocket đều được phản hồi với lỗi 502 Bad Gateway. Tôi có thể xác nhận rằng các yêu cầu http/https thông thường đang hoạt động với thiết lập proxy kép của tôi. Đây là cấu hình hiện tại của tôi.
ủy quyền 1
người phục vụ {
# Cấu hình SSL
#
# nghe 443 ssl default_server;
# lắng nghe [::]:443 ssl default_server;
#
# Lưu ý: Bạn nên tắt gzip cho lưu lượng SSL.
# Xem: https://bugs.debian.org/773332
#
# Đọc ssl_ciphers để đảm bảo cấu hình an toàn.
# Xem: https://bugs.debian.org/765782
#
# Chứng chỉ tự ký được tạo bởi gói ssl-cert
# Đừng sử dụng chúng trong máy chủ sản xuất!
#
# bao gồm đoạn trích/snakeoil.conf;
server_name staging.ambitx.io;
địa điểm / {
proxy_pass http://127.0.0.1:81;
bao gồm proxy_params;
}
lắng nghe [::]:443 ssl ipv6only=on; # được quản lý bởi Certbot
nghe 443 ssl; # được quản lý bởi Certbot
ssl_certificate /etc/letsencrypt/live/staging.ambitx.io/fullchain.pem; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/live/staging.ambitx.io/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
}
người phục vụ {
nếu ($host = staging.ambitx.io) {
trả lại 301 https://$host$request_uri;
} # được quản lý bởi Certbot
nghe 80 default_server;
lắng nghe [::]:80 default_server;
server_name staging.ambitx.io;
trả lại 404; # được quản lý bởi Certbot
}
proxy_params
proxy_set_header Máy chủ $http_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;
ủy quyền 2
(chạy trên docker với cổng 81 trên máy chủ được liên kết với cổng 80 trên vùng chứa)
trình phân giải 127.0.0.11 ipv6=tắt;
người phục vụ {
nghe 80;
nghe [::]:80;
địa điểm / {
gốc/var/www/tệp tĩnh;
chỉ mục index.html index.htm;
try_files $uri /index.html =404;
}
vị trí /ws {
truy cập_đăng xuất;
proxy_pass http://wsserver;
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";
}
vị trí /api {
proxy_pass http://apiserver;
}
}
Ban đầu tôi đã có những tuyên bố dưới đây trong vị trí /ws
khối cấu hình của Proxy 2...
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Máy chủ lưu trữ $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
nhưng tôi đã xóa chúng vì chúng sẽ ghi đè lên các tiêu đề do Proxy 1 đặt.
Bất kỳ ý tưởng? Xin hãy để tôi biết nếu bạn cần nhiều thông tin hơn.