ฉันกำลังตั้งค่าสภาพแวดล้อม Amazon Linux 2/PHP/NGINX ใหม่ และฉันไม่ค่อยคุ้นเคยกับ Nginx เนื่องจากสภาพแวดล้อมสุดท้ายของฉันบน Elastic Beanstalk คือ Amazon Linux/PHP/Apache (Amazon เปลี่ยนพร็อกซีเป็น Nginx จาก Apache และแพลตฟอร์มพื้นฐานได้รับการอัปเกรดจาก Amazon linux เป็น AL2)

ก่อนหน้านี้ ฉันมีไฟล์ .htaccess เพื่อจัดการหลายโดเมน โดยที่โดเมนจะมีโฟลเดอร์ที่เกี่ยวข้องกัน แต่ฉันรู้ว่าไฟล์ .htaccess จะไม่ทำงานกับ Nginx

จนถึงตอนนี้ ฉันได้ลองเพิ่มไฟล์ปรับแต่งในโฟลเดอร์ .ebextensions ด้วยสิ่งนี้:

files:
  "/etc/nginx/sites-available/example.com.conf":
    mode: "000644"
    owner: root
    group: root
    source: https://someothersite.com/example.com.conf

แหล่งที่มาที่อ้างอิง (example.com.conf) มีสิ่งนี้:

server {
        listen 80;
        root /var/www/html/example.com;
        index index.html index.php;
        server_name example.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

ฉันคิดว่าฉันต้องสร้างลิงก์สัญลักษณ์ ดังนั้นฉันจึงมีไฟล์กำหนดค่าอื่นในโฟลเดอร์ .ebextensions ที่มีสิ่งนี้:

commands:
  10_link:
    command: sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

หลังจากคำสั่ง ln นี้ ฉันได้รับข้อผิดพลาดระหว่างการสร้าง หากฉันไม่ทำตามคำสั่งนั้น ฉันก็จะไม่ได้รับข้อผิดพลาด แต่มันใช้งานไม่ได้ (example.com/test.php จะไม่แสดงผล)

ความพยายามครั้งล่าสุดของฉันคือการไม่ทำอะไรเลยในโฟลเดอร์ .ebextensions และฉันได้สร้าง .platform/nginx/conf.d/custom.conf ด้วยเนื้อหาของ

server {
            listen 80;
            root /var/www/html/example.com;
            index index.html index.php;
            server_name example.com;
       location / {
           try_files $uri $uri/ =404;
       }
    }

ดูเหมือนว่าจะใกล้กว่านี้เมื่อ example.com/test.php กำลังไปที่ไฟล์ แต่เซิร์ฟเวอร์แจ้งให้เบราว์เซอร์ดาวน์โหลดไฟล์ php แทน

answer
  1. สำหรับวัตถุประสงค์ในการทดสอบ คุณสามารถสร้างไฟล์ภายในโฟลเดอร์ /etc/nginx/sites-enabled ได้

  2. คุณสามารถใช้หลายโดเมนได้

    server_name *.domain1.com กำหนดเอง.domain2.com;

  3. สุดท้ายนี้ เราต้องประมวลผลไฟล์ PHP ทั้งหมดผ่านapt-get install php7.0-fpmอินเทอร์เฟซFastCGI (บน Ubuntu คุณสามารถติดตั้งได้) กับ PHP-FPM

    server {
    listen       80;
    
    server_name  mydomain.com; 
    
    access_log  /var/log/nginx/access.log  combined; 
    location / { 
        root   /var/www/html; 
        try_files $uri $uri/ /index.php?$args;     
    } 
    location ~ \.php$ { 
        fastcgi_pass unix:/var/run/php7.0-fpm.sock; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME 
         $document_root$fastcgi_script_name; 
        include fastcgi_params; 
    } }