Score:0

การกำหนดค่า Nginx สำหรับการจับคู่ wildcard server_name กับเส้นทาง Symfony เฉพาะ

ธง bd

ฉันมีแอปพลิเคชัน Symfony 5 ที่ domain.tld พร้อมการกำหนดค่า nginx พื้นฐานนี้:

แผนที่ "$http_cloudfront_forwarded_proto:$http_x_forwarded_proto" $cloudfront_proto {
    เริ่มต้น "http";
    "~https" "https";
}

เซิร์ฟเวอร์ {
    server_name โดเมน.tld;
    ฟัง 80 backlog=65535;

    รูท /var/www/project/public;

    client_max_body_size 500M;

    ที่ตั้ง / {
        # พยายามให้บริการไฟล์โดยตรง สำรองที่ index.php
        try_files $uri /index.php$is_args$args;
    }

    # เลือกที่จะปิดการใช้งานการย้อนกลับเป็นสคริปต์ PHP สำหรับไดเรกทอรีเนื้อหา
    # nginx จะส่งคืนข้อผิดพลาด 404 เมื่อไม่พบไฟล์แทนที่จะส่ง
    # คำขอไปยัง Symfony (ปรับปรุงประสิทธิภาพ แต่หน้า 404 ของ Symfony ไม่แสดง)
    # ตำแหน่ง /กลุ่ม {
    # try_files $uri =404;
    # }

    ตำแหน่ง ~ ^/index\.php(/|$) {
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        รวม fastcgi_params;

        # เลือกตั้งค่าของตัวแปรสภาพแวดล้อมที่ใช้ในแอปพลิเคชัน
        # fastcgi_param APP_ENV ผลิตภัณฑ์;
        # fastcgi_param APP_SECRET <app-secret-id>;
        # fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";
        fastcgi_param HTTP_X_FORWARDED_PROTO $cloudfront_proto;

        # เมื่อคุณใช้ symlink เพื่อเชื่อมโยงรูทเอกสารกับ
        # ใบสมัครรุ่นปัจจุบันคุณควรผ่านจริง
        เส้นทางแอปพลิเคชัน # แทนเส้นทางไปยัง symlink ไปยัง PHP
        #เอฟพีเอ็ม.
        # มิฉะนั้น OPcache ของ PHP อาจตรวจไม่พบการเปลี่ยนแปลงอย่างถูกต้อง
        # ไฟล์ PHP ของคุณ (ดู https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # สำหรับข้อมูลเพิ่มเติม).
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # ป้องกัน URIs ที่มีตัวควบคุมด้านหน้า สิ่งนี้จะ 404:
        # http://domain.tld/index.php/some-path
        # ลบคำสั่งภายในเพื่ออนุญาต URI เช่นนี้
        ภายใน;
    }

    # ส่งคืน 404 สำหรับไฟล์ php อื่นทั้งหมดที่ไม่ตรงกับตัวควบคุมด้านหน้า
    # สิ่งนี้จะป้องกันการเข้าถึงไฟล์ php อื่น ๆ ที่คุณไม่ต้องการให้เข้าถึง
    ตำแหน่ง ~ \.php$ {
        กลับ 404;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

กรณีการใช้งานของฉัน:

ฉันมีเส้นทางหลายเส้นทาง:

/site/{siteUrl}
/site/{siteUrl}/*
/site/{siteUrl}/*/*
...

ชอบ :

ฉันต้องการเข้าถึงเส้นทางนี้ด้วย URL เช่น

ฉันไม่ต้องการเปลี่ยนเส้นทาง แต่กฎการเขียนใหม่สำหรับ URL ทั้งหมดเริ่มต้นด้วย prefix.domain.tld ชี้ไปที่ /site/prefix.domain.tld url และ URL สินทรัพย์คงที่อื่น ๆ เช่น prefix.domain.tld/build/css/ custom.css ใช้งานได้

ฉันพยายามเพิ่มบล็อกเซิร์ฟเวอร์ใหม่ด้วยการเพิ่มนี้:

เซิร์ฟเวอร์ {
    คำนำหน้าชื่อ server_name.*;
    รูท /var/www/project/public;
    ฟัง 80;

    client_max_body_size 100M;

    ที่ตั้ง = / {
        เขียนใหม่ ^ /index.php/site/$host break;
    }

...

แต่มันไม่ได้ผลเลย...

คุณสามารถช่วยฉันได้ไหม ? :D

ขอบคุณ

us flag
คุณทำอะไรกันแน่เมื่อ "มันไม่ได้ผลเลย..."? คุณขออะไร อะไรคือคำตอบที่ถูกต้อง?
El Lobo Blanco avatar
bd flag
สวัสดีเทโร เมื่อฉันลอง https://prefix.domainA.tld มีข้อผิดพลาด 404 ไม่พบ nginx

โพสต์คำตอบ

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