Score:0

นักเทียบท่า + Symfony + Nginx + PHP 8.1 เกตเวย์ที่ไม่ดีกำหนดค่า php สำหรับ Nginx

ธง cn

ฉันพยายามเข้าถึงแอปพลิเคชัน symfony ของฉันผ่านการตั้งค่าการเขียนนักเทียบท่า

ฉันมีปัญหากับ nginx default.conf เมื่อพยายามเข้าถึงแอป ฉันได้รับเกตเวย์ที่ไม่ดี

บันทึกนักเทียบท่าแสดงข้อผิดพลาด:

ไม่มีตัวแก้ไขที่กำหนดเพื่อแก้ไขแอป ลูกค้า: 193.32.126.216

ฉันจึงลองวาง 127.0.0.1:9000 แทน แอพ:9000 และฉันได้รับข้อผิดพลาดใหม่:

การเชื่อมต่อ () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ขณะเชื่อมต่อกับอัปสตรีม

ฉันมีการกำหนดค่านี้:

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

จิงซ์:
  ชื่อคอนเทนเนอร์: nginx
  ภาพ: "${NGINX_IMAGE}"
  สร้าง: สร้าง / nginx
  รีสตาร์ท: เสมอ
  env_file: .env
  พอร์ต:
    # - "8000:443"
    - "80:80"
    - "443:443"
  ปริมาณ:
    - "${APP_HOST_DIR}/public:/var/www/app/public:ro"
    - "${APP_HOST_LETSENCRYPT}:${APP_CONTAINER_LETSENCRYPT}"
    - "${APP_HOST_NGINX_CONF}:${APP_CONTAINER_NGINX_CONF}"
  ปริมาณ_จาก:
    - แอป
  เครือข่าย:
    -central_mr
  ขึ้นอยู่กับ:
    - แอป

แอป:
  container_name: แอป
  ภาพ: "${APP_IMAGE}"
  รีสตาร์ท: เสมอ
  สร้าง: สร้าง / แอพ
  env_file: .env
  เครือข่าย:
    -central_mr
  ปริมาณ:
    - "${APP_HOST_DIR}:${APP_CONTAINER_DIR}"


  เครือข่าย:
    เซ็นทรัล_mr:

.env

#ผลิตภัณฑ์
MODE=ผลิตภัณฑ์

# ภาพ
NGINX_IMAGE=mr/nginx:prod
MARIADB_VERSION=ล่าสุด
APP_IMAGE=mr/app:prod

# แอป
APP_HOST_DIR=./แอป
APP_CONTAINER_DIR=/var/www/app/

#มาเรียดีบี
MARIADB_DATA_DIR=/var/lib/mysql
MARIADB_LOG_DIR=/var/logs/mysql
SQL_INIT=./build/database/prod

MYSQL_DATABASE=แอป
MYSQL_USER=แอป
MYSQL_PASSWORD=รหัสผ่าน
MYSQL_ROOT_PASSWORD=รหัสผ่าน

APP_HOST_NGINX_CONF=./volume/etc/nginx/prod/default.conf
APP_CONTAINER_NGINX_CONF=/etc/nginx/conf.d/default.conf

#NGINX
APP_HOST_NGINX_CONF=./volume/etc/nginx/prod/default.conf
APP_CONTAINER_NGINX_CONF=/etc/nginx/conf.d/default.conf

# SSL
APP_HOST_LETSENCRYPT=/etc/letsencrypt/
APP_CONTAINER_LETSENCRYPT=/etc/letsencrypt/

default.conf

เซิร์ฟเวอร์ {

ฟัง [::]:443 ssl; 
ฟัง 443 ssl; 
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; 
รวม /etc/letsencrypt/options-ssl-nginx.conf; 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
รูท /var/www/app/public/;
ดัชนี index.php;
server_name mywebsite.com; 


ตำแหน่ง ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    ตั้ง $upstream app:9000;
    fastcgi_pass $อัพสตรีม; 
    fastcgi_index index.php;
}
}

เอฟดี

Score:0
ธง gr

Do you really need to specify your upstream name using the variable? This trick usually used when your backend can be unavailable or down when the nginx container starts; some more details can be found in this article. If it isn't your case, you can use the container name directly:

fastcgi_pass app:9000;

If it is really your case after all, you can define a resolver using internal docker-compose container-to-IP resolving system:

resolver 127.0.0.11;

or better move your upstream declaration to the separate upstream block and go on without and additional resolver needed to be defined:

upstream webapp {
    server app:9000;
}
server {
    ...
    location ~ \.php$ {
        try_files $uri =404;
        set $upstream webapp;
        fastcgi_pass $upstream; 
    }
}

โพสต์คำตอบ

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