Điểm:0

Kết nối Nginx bị từ chối

lá cờ ng

Tôi đang sử dụng bộ chứa docker để lưu trữ ứng dụng web. Tôi có ba vùng chứa chính: MySQL, bình và Nginx. Hai cái đầu tiên hoạt động như mong đợi và cái sau dường như hoạt động tốt vì không có lỗi nào được hiển thị trong quá trình khởi động docker-compose.

Đầu ra khởi tạo vùng chứa Nginx:

nginx | /docker-entrypoint.sh: /docker-entrypoint.d/ không trống, sẽ cố gắng thực hiện cấu hình
nginx | /docker-entrypoint.sh: Tìm kiếm shell script trong /docker-entrypoint.d/
nginx | /docker-entrypoint.sh: Khởi chạy /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx | 10-listen-on-ipv6-by-default.sh: thông tin: /etc/nginx/conf.d/default.conf không phải là tệp hoặc không tồn tại
nginx | /docker-entrypoint.sh: Khởi chạy /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx | /docker-entrypoint.sh: Khởi chạy /docker-entrypoint.d/30-tune-worker-processes.sh
nginx | /docker-entrypoint.sh: Cấu hình hoàn tất; sẵn sàng khởi động
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: sử dụng phương thức sự kiện "epoll"
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: nginx/1.21.6
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: được xây dựng bởi gcc 10.2.1 20210110 (Debian 10.2.1-6) 
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: Hệ điều hành: Linux 4.19.130-boot2docker
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: bắt đầu worker process
nginx | 2022/04/07 13:09:13 [thông báo] 1#1: bắt đầu worker process 21

Nginx dockerfile

# Dockerfile-nginx
TỪ nginx:mới nhất
# Nginx sẽ lắng nghe trên cổng này
# TIẾP XÚC 80
# Xóa tệp cấu hình mặc định
# /etc/nginx/nginx.conf bao gồm
CHẠY rm /etc/nginx/conf.d/default.conf
# Chúng tôi sao chép tệp yêu cầu để cài đặt
# Phụ thuộc Python
SAO CHÉP nginx.conf /etc/nginx/conf.d/

Các container sau khi triển khai và các cổng tương ứng:

ID CONTAINER HÌNH ẢNH LỆNH TẠO TÊN CỔNG TRẠNG THÁI
bffffcfe2f70 sc_server_nginx "/docker-entrypoint.â¦" 14 giây trước Lên 13 giây 0.0.0.0:80->80/tcp nginx
a73d958c1407 sc_server_flask "uwsgi app.ini" 9 giờ trước Lên 9 giờ 8080/tcp bình
d273db5f80ef mysql:5.7 "docker-entrypoint.sâ¦" 21 giờ trước Lên 9 giờ (khỏe mạnh) 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

Tôi mới sử dụng máy chủ Nginx, vì vậy tôi đoán đó có thể là lỗi của người mới. Tôi đang cố chuyển hướng tất cả lưu lượng truy cập từ cổng 80 của máy chủ sang cổng 80 của docker để chuyển hướng lưu lượng truy cập đến bộ chứa WSGI thông qua một ổ cắm.

Tôi đang sử dụng cấu hình Nginx sau (tôi đoán là không có gì lạ mắt):

người phục vụ {
  nghe 80;
  địa điểm / {
    bao gồm uwsgi_params;
    uwsgi_pass bình: 8080;
  }
}

Như bạn có thể thấy máy chủ lắng nghe ở cổng 80 và chuyển hướng tất cả lưu lượng truy cập qua ổ cắm uwsgi_pass bình: 8080; vào bộ chứa WSGI đang lưu trữ ứng dụng.

Tuy nhiên, bất cứ khi nào tôi gõ 127.0.0.1:80 hoặc 0.0.0.0:80 trong trình duyệt của mình, kết nối sẽ bị từ chối. Tôi không triển khai tường lửa, vì vậy tôi đoán rằng không có vấn đề gì với việc cổng 80 bị hỏng.

Đây là tệp cấu hình app.ini của tôi, trong đó các tham số khởi tạo và triển khai được chỉ định:

[uwsgi]
tệp wsgi = wsgi.py
; Đây là tên của biến
; trong kịch bản của chúng tôi sẽ được gọi
gọi được = ứng dụng
; Chúng tôi sử dụng cổng 8080 mà chúng tôi sẽ
; sau đó hiển thị trên Dockerfile của chúng tôi
ổ cắm = :8080
; Đặt uWSGI để khởi động 4 công nhân
quy trình = 4
chủ đề = 2
chủ = đúng
ổ cắm chmod = 660
chân không = đúng
die-on-term = true

Ngoài ra, tôi cũng bao gồm docker-compose.yml (tôi đoán nó có thể hữu ích):

docker-compose.yml

dịch vụ:
  bình giữ nhiệt:
    xây dựng: ./flask
    container_name: bình
    khởi động lại: luôn luôn
    môi trường:
      - APP_NAME=MyFlaskApp
      - YOURAPPLICATION_SETTINGS=docker_config.py
    lộ ra:
      - 8080
    phụ thuộc:
      mysql:
          điều kiện: service_healthy
  mysql:
    hình ảnh: mysql:5.7
    container_name: mysql
    cổng:
      - "3306:3306"
    môi trường:
      MYSQL_ROOT_PASSWORD:
      MYSQL_DATABASE:
      MYSQL_USER:
      MYSQL_PASSWORD:
    khối lượng:
      - ./db/init.sql:/data/application/init.sql
    kiểm tra sức khỏe:
      kiểm tra: mysql -u -p --database -e "hiển thị bảng;"
      khoảng thời gian: 3s
      thử lại: 5
      start_period: 30s
  nginx:
    xây dựng: ./nginx
    container_name: nginx
    khởi động lại: luôn luôn
    phụ thuộc:
      - mysql
      - bình giữ nhiệt
    cổng:
      - "80:80"

Bất cứ ai có thể giúp đỡ?

Cập nhật

Tôi đã sử dụng Wireshark để quét giao diện loopback để xem phản hồi của máy chủ với 0.0.0.0:80 (tôi nghi ngờ có thể có vấn đề với cổng 80) và tôi nhận được tải trọng sau:

cá mập

drookie avatar
lá cờ za
Kiểm tra nhật ký vùng chứa nginx, câu trả lời là có.

Đă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.