Tôi có một API tại phụ trợ.mysite.local
và tôi có thể truy cập trực tiếp từ trình duyệt.
Nhưng khi tôi cố gắng gọi API từ bên trong bộ chứa Node, tôi nhận được 502 Bad Gateway với lỗi sau:
connect() không thành công (113: Máy chủ không thể truy cập được) trong khi kết nối với
ngược dòng, máy khách: 172.20.0.1, máy chủ: www.mysite.local, yêu cầu: "NHẬN
/api/items HTTP/1.1", ngược dòng:
"http://172.20.0.3:3000/api/items", máy chủ lưu trữ: "www.mysite.local"
Đây là cấu hình nginx của tôi (Tôi mới sử dụng nginx nên tôi có thể thực hiện theo cách ngắn hơn, nhưng nó chủ yếu là chặn chuyển hướng từ cổng 80 sang cổng 443 - vì vậy sẽ đánh giá cao nếu bạn cũng xem lại nó)
người phục vụ {
nghe 443 ssl;
server_name backend.mysite.local;
ssl_certificate /etc/ssl/mysite.local.crt;
ssl_certificate_key /etc/ssl/mysite.local.key;
chỉ mục index.php index.html;
server_name backend.mysite.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
gốc /var/www/html/công khai;
địa điểm / {
try_files $uri $uri/ /index.php?$query_string;
}
vị trí ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
bao gồm fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
đặt $METHODS 'NHẬN, ĐĂNG, TÙY CHỌN, ĐẦU';
đặt $HEADERS 'Ủy quyền, Nguồn gốc, X-Requested-With, Loại nội dung, Chấp nhận';
nếu ( $request_method = POST ){
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' 'https://www.mysite.local';
add_header 'Kiểm soát truy cập-Cho phép-Thông tin xác thực' 'true';
}
}
}
người phục vụ {
nghe 80;
server_name http.backend.mysite.local;
trả lại 301 https://backend.mysite.local$request_uri;
}
người phục vụ {
nghe 80;
tên_máy chủ nginx;
trả lại 301 https://backend.mysite.local$request_uri;
}
người phục vụ {
nghe 80;
server_name www.mysite.local;
trả lại 301 https://www.mysite.local$request_uri;
}
người phục vụ {
nghe 80;
server_name mysite.local;
trả lại 301 https://www.mysite.local$request_uri;
}
người phục vụ {
nghe 443 ssl;
server_name mysite.local;
ssl_certificate /etc/ssl/mysite.local.crt;
ssl_certificate_key /etc/ssl/mysite.local.key;
trả lại 301 https://www.mysite.local$request_uri;
}
người phục vụ {
nghe 443 ssl;
server_name www.mysite.local;
ssl_certificate /etc/ssl/mysite.local.crt;
ssl_certificate_key /etc/ssl/mysite.local.key;
địa điểm / {
proxy_pass http://node:3000;
}
}
Chỉnh sửa: Đây là docker-compose.yml
:
mạng:
trang web của tôi:
tài xế: cầu
dịch vụ:
nginx:
hình ảnh: nginx:ổn định-alpine
container_name: nginx
cổng:
- "8088:8088"
- "80:80"
- "443:443"
mạng:
- trang web của tôi
php:
xây dựng:
bối cảnh: ./laravel
dockerfile: dockerfile
container_name: php
cổng:
- "9000:9000"
mạng:
- trang web của tôi
nút:
xây dựng:
ngữ cảnh: ./reac
dockerfile: dockerfile
container_name: phản ứng
cổng:
- "3000:3000"