Score:0

นักเทียบท่า - เกตเวย์ไม่ถูกต้องเมื่อพยายามพร็อกซีคอนเทนเนอร์ nginx ไปยังคอนเทนเนอร์ laravel php-fpm

ธง cn

ฉันกำลังพยายามหาสาเหตุที่ทำให้เกิด 502

ฉันมีแอปพลิเคชั่นง่าย ๆ ที่มีสองคอนเทนเนอร์:

เว็บ - เรียกใช้ nginx พร้อมพรอกซีไปยังแอป: แอป fastcgi_pass:9000;

แอป - เรียกใช้ php-fpm ฉันไม่แน่ใจว่าฉันจะส่งคำขอจากเว็บได้อย่างไร แต่บนแอป/ในเครื่องถ้าฉันเรียกใช้ php ช่างฝีมือขึ้น ฉันได้รับคำตอบจาก สมัครได้แล้ว

ฉันยังสามารถ ping แอป จาก เว็บ apt-get update && apt-get install iputils-ping -y && แอป ping

ถ้าฉันพยายามไปที่ artery.local ในเบราว์เซอร์ ฉันเห็น เว็บ ในบันทึกนักเทียบท่าเขียน

เว็บ | 29/11/2021 21:55:33 [ข้อผิดพลาด] 31#31: *9 recv() ล้มเหลว (104: การเชื่อมต่อถูกรีเซ็ตโดยเพียร์) ในขณะที่อ่านส่วนหัวการตอบสนองจากต้นน้ำ ลูกค้า: 172.18.0.1 เซิร์ฟเวอร์: artery.local คำขอ: "GET /admin/home HTTP/1.1", อัพสตรีม: "fastcgi://172.18.0.2:9000", โฮสต์: "artery.local"

ได้โปรด ใครก็ได้ช่วยฉันอธิบายเรื่องนี้หน่อย ฉันไม่แน่ใจว่าฉันจะทำอย่างไรเพื่อทดสอบว่า app/php-fpm กำลังฟังคำขอที่ส่งต่อโดย web/nginx อย่างถูกต้อง

นักเทียบท่า-compose.yml

รุ่น: '3'
บริการ:

  #แอพพลิเคชั่น
  แอป:
    สร้าง:
      บริบท: ./
      ไฟล์นักเทียบท่า: ./app-dev.dockerfile
    working_dir: /var/www
    container_name: แอป
    ปริมาณ:
      - ../:/var/www
#พอร์ต:
# - 9000:9000
    สิ่งแวดล้อม:
      - COMPOSER_MEMORY_LIMIT=-1
    เครือข่าย:
      - แอพเครือข่าย

  # เว็บเซิร์ฟเวอร์
  เว็บ:
    สร้าง:
      บริบท: ./
      ไฟล์นักเทียบท่า: ./web.dockerfile
    container_name: เว็บ
    working_dir: /var/www
    ปริมาณ:
      - ../:/var/www
    พอร์ต:
      - 80:80
    เครือข่าย:
      - แอพเครือข่าย

#นักเทียบท่าเครือข่าย
เครือข่าย:
  แอปเครือข่าย:
    คนขับ: สะพาน

app-dev.dockerfile

จาก php:7.4-fpm

ชุด RUN -eux; \
    ฉลาดรับการปรับปรุง; \
    apt-รับการอัพเกรด -y; \
    apt-get install -y --no-install-recommends \
            ขด \
            libmemcached-dev \
            libz-dev \
            libpq-dev \
            libjpeg-dev \
            libpng-dev \
            libfreetype6-dev \
            libssl-dev \
            libwebp-dev \
            libmcrypt-dev \
            libonig-dev; \
    rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ libgmp-dev libpng-dev pdftk กราฟวิซ
RUN นักเทียบท่า-php-ext-install pcntl
ซ็อกเก็ต RUN docker-php-ext-install
เรียกใช้ apt-get install git -y
รัน apt-get install libpcre++-dev -y
RUN pecl ติดตั้ง oauth
RUN docker-php-ext-enable oauth

#mysql & gd 
ชุด RUN -eux; \
    # ติดตั้งส่วนขยาย PHP pdo_mysql
    นักเทียบท่า-php-ext-install pdo_mysql; \
    # ติดตั้งไลบรารี PHP gd
    นักเทียบท่า-php-ext-configure gd \
            --คำนำหน้า=/usr \
            --กับ jpeg \
            --กับ-webp \
            --กับประเภทอิสระ; \
    นักเทียบท่า-php-ext-install gd; \
    php -r 'var_dump(gd_info());'

RUN apt-get update \
     && apt-get install -y libzip-dev \
     && นักเทียบท่า-php-ext-install zip

#ขด
เรียกใช้ apt-get install libcurl4-gnutls-dev -y
RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN พิมพ์f "\n" | pecl ติดตั้ง imagick
RUN docker-php-ext-enable imagick
RUN ลูกแพร์ติดตั้ง PHP_CodeSniffer

# ส่วนขยาย PHP REDIS
RUN พิมพ์f "\n" | pecl ติดตั้ง -o -f redis \
    && rm -rf /tmp/แพร์ \
    && นักเทียบท่า-php-ext-เปิดใช้งาน redis

# ติดตั้ง XDebug
RUN pecl ติดตั้ง xdebug && docker-php-ext-enable xdebug
สำเนา ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

คัดลอก laravel.ini /etc/nginx/conf.d/laravel.conf
สำเนา ./xlaravel.pool.conf /etc/nginx/conf.d/laravel-pool.conf

สำเนา laravel.ini /usr/local/etc/php/conf.d
สำเนา ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/

รัน apt-get update && apt-get install iputils-ping -y

#รับแต่งเพลง
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=ผู้แต่ง

เปิดเผย 9000
CMD ["php-fpm"]

เว็บ.dockerfile

จาก nginx: ล่าสุด

เพิ่ม vhost.conf /etc/nginx/conf.d/default.conf

# ส่งต่อคำขอและบันทึกข้อผิดพลาดไปยังตัวรวบรวมบันทึกนักเทียบท่า
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

laravel.pool.conf

ผู้ใช้ = www-ข้อมูล
กลุ่ม = www-ข้อมูล
ฟัง = 0.0.0.0:9000
pm = ไดนามิก
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = ใช่
request_terminate_timeout = 600

vhost.conf โหลดจาก web.dockerfile

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;

    server_name artery.local;

    รูท /var/www/public;

    # หลีกเลี่ยงข้อผิดพลาด 413 เมื่ออัปโหลดไฟล์ที่มีขนาดไม่เกิน 5M
    client_max_body_size 10M;

    add_header X-Frame-ตัวเลือก "SAMEORIGIN";
    add_header X-XSS-การป้องกัน "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    ดัชนี index.html index.htm index.php;

    ชุดอักขระ utf-8;

    ที่ตั้ง / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง = /robots.txt { access_log off; ปิด log_not_found; }

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    error_page 404 /index.php;

    ตำแหน่ง ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        แอป fastcgi_pass:9000;
        fastcgi_index index.php;
        รวม fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_read_timeout 600;
    }

    สถานที่ ~ /\.(?!เป็นที่รู้จัก).* {
        ปฏิเสธทั้งหมด
    }
}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา