Score:0

Nginx: เรียกใช้เว็บแอปหลายรายการบนเซิร์ฟเวอร์เดียวกันโดยใช้โดเมนย่อย

ธง in

ฉันกำลังมี อูบุนตู 20.04.1 LTS และฉันกำลังวิ่ง nginx/1.18.0 (อูบุนตู).

ฉันมีไฟล์ปรับแต่งสามไฟล์ในโฟลเดอร์ของฉัน /etc/nginx/sites-available เนื่องจากฉันต้องการกำหนดเส้นทางคำขอไปที่:

  1. myserver.com
  2. immos.myserver.com
  3. items.myserver.com

ของฉัน myserver.com ไฟล์ config มีลักษณะดังนี้:

เซิร์ฟเวอร์ {
    server_name myserver.com www.myserver.com;
    รูท /var/www/main-application/public;

    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; }

    error_page 404 /index.php;

    ตำแหน่ง ~ \.php$ {
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        รวม fastcgi_params;
    }

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


    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/myserver.com/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/myserver.com/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot


}
เซิร์ฟเวอร์ {
    ถ้า ($host = www.myserver.com) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


    ถ้า ($host = myserver.com) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


    ฟัง 80;
    server_name myserver.com www.myserver.com nlg.myserver.com;
    กลับ 404; # จัดการโดย Certbot




}

nginx-config ของฉัน immos.myserver.com มีลักษณะดังต่อไปนี้:

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name immos.myserver.com;
    รูท /var/www/immos-application/public;

    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; }

    error_page 404 /index.php;

    ตำแหน่ง ~ \.php$ {
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        รวม fastcgi_params;
    }

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

}

การกำหนดค่า nginx ของฉัน items.myserver.com มีลักษณะดังต่อไปนี้:

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name items.myserver.com;
    รูท /var/www/items_application/public;

    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; }

    error_page 404 /index.php;

    ตำแหน่ง ~ \.php$ {
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        รวม fastcgi_params;
    }

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

}

โดเมนย่อยและโดเมนทั้งหมดถูกกำหนดเส้นทางบน DNS ไปยัง IP ของเซิร์ฟเวอร์ของฉัน

ฉันสามารถเปิด myserver.com และนำทางไปยังหน้าที่ถูกต้อง

แต่เมื่อเปิด immos.myserver.com, items.myserver.com ฉันได้รับการกำหนดเส้นทางไปยังแอปพลิเคชันที่กำลังทำงานอยู่ myserver.com.

ทั้งสามแอปพลิเคชันเป็นแอปพลิเคชัน laravel

ข้อเสนอแนะใด ๆ ที่ฉันทำผิด?

in flag
โดเมนย่อยของคุณได้รับการกำหนดค่าสำหรับ http เท่านั้น คุณกำลังพยายามเข้าถึงผ่าน https หรือไม่
dave_thompson_085 avatar
jp flag
ไฟล์เหล่านี้มีเฉพาะใน `sites-available` หรือ **คุณเชื่อมโยงไฟล์เหล่านี้ใน `sites-enabled` และตีกลับ nginx หรือไม่** หากไม่ใช่ แสดงว่า nginx ไม่ได้อ่านไฟล์เหล่านี้ ดู https://serverfault.com/questions/424452/nginx-enable-site-command

โพสต์คำตอบ

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