Score:0

VPS พร้อม Ubuntu 18.04 NGINX ดาวน์โหลดไฟล์ PHP

ธง cn

ฉันมี VPS ด้วย:

  • อูบุนตู 18.04
  • งินซ์
  • 7.2 บาทต่อนาที

เซิร์ฟเวอร์เรียกใช้โครงการ Ruby on rails เป็น homeurl (example.com) และ wordpress เป็นไดเร็กทอรี (example.com/blog) อันดับแรก VPS ได้รับการกำหนดค่าด้วย Apache2 ทำให้ทุกอย่างทำงานได้ดี จนกระทั่งฉันต้องผสานรวมการแชทสด ต้องเปลี่ยนไปใช้ Nginx สำหรับ Action Cable

ตอนนี้ แอปแชททำงานได้ดีบน RoR แต่ถ้าฉันพยายามเข้าถึงบล็อก ฉันได้รับไฟล์ index.php เพื่อดาวน์โหลด มันไม่ทำงาน

นี่คือการกำหนดค่าเริ่มต้น nginx ของฉัน:

# คุณควรดู URL ต่อไปนี้เพื่อทำความเข้าใจที่แน่นอน
# ของไฟล์การกำหนดค่า Nginx เพื่อปลดปล่อยพลังของ Nginx ได้อย่างเต็มที่
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# ในกรณีส่วนใหญ่ ผู้ดูแลระบบจะลบไฟล์นี้ออกจากไซต์ที่เปิดใช้งาน/ และ
# ปล่อยให้เป็นข้อมูลอ้างอิงภายในไซต์ที่มีอยู่ซึ่งจะยังคงอยู่ต่อไป
# อัปเดตโดยทีมบรรจุภัณฑ์ nginx
#
# ไฟล์นี้จะโหลดไฟล์การกำหนดค่าที่ผู้อื่นให้มาโดยอัตโนมัติ
# แอปพลิเคชัน เช่น Drupal หรือ Wordpress แอปพลิเคชันเหล่านี้จะทำขึ้น
# อยู่ภายใต้เส้นทางที่มีชื่อแพ็คเกจนั้น เช่น /drupal8
#
# โปรดดู /usr/share/doc/nginx-doc/examples/ สำหรับตัวอย่างโดยละเอียดเพิ่มเติม
##

# การกำหนดค่าเซิร์ฟเวอร์เริ่มต้น
#

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

        ฟัง 80; ## ฟัง ipv4; บรรทัดนี้เป็นค่าเริ่มต้นและโดยนัย
        ฟัง [::]:80 default_server ipv6only=เปิด; ## ฟังสำหรับ ipv6
        ดัชนี index.php index.html index.htm index.nginx-debian.html;
        server_name localhost; 
        ฟัง 443 ssl default_server;
        ฟัง [::]:443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/asdfsf.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/sdafasdf.net/privkey.pem;
        รูท /var/www/html/public;
        Passenger_enabled บน;
        Passenger_ruby /usr/local/bin/ruby;

ตำแหน่ง /var/www/html/public {
        try_files $uri $uri/ =404;
    }

    

สถานที่ ~ ^/blog(/.*|$) {

 รูท /var/www/html/public/blog;
        
         try_files $uri $uri/ /blog/index.php?$args;
        Passenger_enabled ปิด;       
        ดัชนี index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;

        }

ตำแหน่ง ~ \.php$ {
                รวมตัวอย่าง/fastcgi-php.conf;
                fastcgi_pass ยูนิกซ์:/var/run/php/php7.2-fpm.sock;
   
        }


}

ใช้เวลา 3 คืนในการแก้ไขปัญหา ฉันไม่สามารถทำให้ถูกต้องได้ คำใบ้ใด ๆ ยินดีเป็นอย่างยิ่ง ขอขอบคุณ

Score:1
ธง gr

คุณมีตำแหน่งที่ตรงกันของ regex สองแห่ง แต่คุณไม่มี fastcgi_pass คำสั่งในอันแรก ตำแหน่งที่ตรงกันตาม Regex จะถูกตรวจสอบจากตำแหน่งแรกไปยังตำแหน่งสุดท้าย ดังนั้นตำแหน่งที่สอง (ที่คุณมี fastcgi_pass คำสั่ง) จะไม่มีวันไปถึง นั่นหมายถึงไฟล์ PHP ใด ๆ ที่เข้าถึงได้ด้วยไฟล์ /บล็อก/ คำนำหน้า URI จะถือเป็นไฟล์ธรรมดาและจะไม่ถูกส่งต่อไปยังแบ็กเอนด์ PHP-FPM เพื่อดำเนินการ คุณสามารถใช้สองตำแหน่งที่ซ้อนกันแทนได้:

สถานที่ ~ ^/blog(/.*|$) {
    Passenger_enabled ปิด;       
    ดัชนี index.php;
    try_files $uri $uri/ /blog/index.php?$args;
    ตำแหน่ง ~ \.php$ {
        รวมตัวอย่าง/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.2-fpm.sock;
    }
}

คุณไม่จำเป็นต้องกำหนด รูท /var/www/html/public/blog; สำหรับสถานที่นี้ คุณมีอยู่แล้ว รูท /var/www/html/public; ที่ระดับบน ดังนั้น nginx จะค้นหาไฟล์ index.php ขอเป็น /blog/index.php ใน /var/www/html/public/blog ไดเรกทอรี (ดูความแตกต่างระหว่าง ราก และ นามแฝง คำสั่ง nginx)

Mihai Andrei Maria avatar
cn flag
ตอนนี้ไม่พบ 404
Ivan Shatsky avatar
gr flag
หาก `index.php` ของคุณอยู่ในไดเร็กทอรี `/var/www/html/public/blog` ให้ลบคำสั่ง `root` ออกจากตำแหน่งนี้
Mihai Andrei Maria avatar
cn flag
ขอบคุณมากสำหรับความพยายามของคุณ ข้าพระองค์สิ้นกำลังแล้ว ขอแสดงความนับถืออย่างสูง !
Ivan Shatsky avatar
gr flag
เพิ่มคำอธิบายบางอย่าง ฉันยังแนะนำให้คุณอ่าน[สิ่งนี้](https://serverfault.com/tour#:~:text=The%20person%20who%20asked%20can%20mark%20one%20answer%20as%20%22accepted%22) :)

โพสต์คำตอบ

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