Điểm:0

Không thể truy cập máy chủ trong khi kết nối ngược dòng từ bộ chứa Node Docker

lá cờ in

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"       
Michael Hampton avatar
lá cờ cz
Bạn đã tạo vùng chứa của mình như thế nào? Hiển thị cấu hình có liên quan (ví dụ: docker-compose.yml).
Stackerito avatar
lá cờ in
Cảm ơn bạn, đã chỉnh sửa bài đăng, thêm `docker-compose.yml`. Tôi nhận ra rằng có thể tôi đã hoàn toàn hiểu sai về toàn bộ cấu trúc ứng dụng của mình. Tôi đã trộn tên máy chủ lưu trữ Windows của mình với tên bộ chứa Docker nội bộ và tất cả đều bị lẫn lộn.
Michael Hampton avatar
lá cờ cz
Tất cả các thùng chứa của bạn có thực sự hoạt động không? Lỗi bạn gặp phải là lỗi tôi mong đợi nếu vùng chứa không chạy.
Stackerito avatar
lá cờ in
Bạn là một chuyên gia thực sự, bộ chứa nút tự tắt sau khi tôi gặp lỗi trong mã. Và tôi có đúng về những gì tôi đã nói trong bình luận trước đó không? Rằng tôi đã trộn tên Máy chủ của mình với cách đặt tên Docker nội bộ? Tôi có nên sử dụng chế độ `host` trong trường hợp của mình không?
Michael Hampton avatar
lá cờ cz
Tôi không sử dụng Docker trên Windows, vì vậy tôi thực sự không thể nói bất cứ điều gì về điều đó. Từ tất cả các vấn đề mà tôi đã thấy mọi người gặp phải, có lẽ tôi sẽ không khuyên dùng nó. Dù sao thì nó cũng sẽ không được triển khai để sản xuất theo cách đó.
Stackerito avatar
lá cờ in
Cảm ơn.vì vậy nếu đó là nơi thích hợp để hỏi: trong trường hợp của tôi, nơi tôi có các dịch vụ Node, Nginx, MySQL và PHP, bạn sẽ khuyên tôi nên phát triển dự án của mình như thế nào? Trực tiếp trên Windows (Như tôi đã làm ở nơi đầu tiên?). Tôi muốn nó càng gần ngày sản xuất càng tốt (nếu đó là một điều tốt?). Mình mới bắt đầu với Docker vì thấy một số chỗ làm hỏi kinh nghiệm về nó nên muốn học
Michael Hampton avatar
lá cờ cz
Giống như, trực tiếp trên Linux mà không cần trung gian như WSL2 đôi khi làm những điều kỳ lạ. Bắt đầu một số máy ảo Linux của riêng bạn và chơi xung quanh.
Stackerito avatar
lá cờ in
Cảm ơn bạn. Và có cách nào thích hợp để cài đặt Nginx trên Windows không? Nếu không, có lẽ tôi sẽ cài đặt Linux dưới dạng khởi động kép cùng với máy Windows của mình

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.