Score:0

โฮสต์โปรเจ็กต์ django สองโปรเจ็กต์ในหยดเดียวกันที่มีโดเมนย่อยต่างกัน (NGINX, Gunicorn, ubuntu)

ธง fr

ตามชื่อเรื่อง ฉันต้องการโฮสต์โปรเจ็กต์ django สองโปรเจ็กต์ในหยดเดียวกัน (NGINX, Gunicorn, ubuntu) ที่มีโดเมนย่อยต่างกันหนึ่งในนั้นคือเว็บไซต์หลักของเรา example.com ซึ่งพร้อมทำงานและทำงานได้อย่างสมบูรณ์ เราต้องการโฮสต์ไซต์ staging staging.example.com ในหยดเดียวกัน

เราได้สร้างซ็อกเก็ตและไฟล์บริการใหม่สำหรับไซต์ staging และเปิดใช้งานและเปิดใช้งาน แต่ปัญหาคือ nginx ยังคงชี้ไปที่ไฟล์ในไดเร็กทอรีของโดเมนหลักแทนที่จะเป็นไดเร็กทอรี staging และด้วยเหตุนี้เราจึงได้รับข้อผิดพลาดนี้ด้านล่างแม้ว่าจะมีการเพิ่มโดเมนเหล่านี้แล้วก็ตาม ในโฮสต์ที่อนุญาตของ settings.py ของไซต์การแสดงละคร

DisallowedHost ที่ / ส่วนหัว HTTP_HOST ไม่ถูกต้อง: 'staging.example.com' คุณอาจต้องเพิ่ม >'staging.example.com' ใน ALLOWED_HOSTS

นี่คือไฟล์ staging.guinicorn.service ของเรา

[หน่วย]
คำอธิบาย=staging.gunicorn daemon
ต้องการ = staging.gunicorn.socket
หลังจาก = network.target

[บริการ]
ผู้ใช้=ผู้ดูแลระบบ
Group=www-ข้อมูล
WorkingDirectory=/home/admin/example1staging
ExecStart=/home/admin/example1staging/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/staging.gunicorn.sock djangoproject.wsgi:application

[ติดตั้ง]
WantedBy=multi-user.target

นี่คือไฟล์ staging.guicorn.socket ของเรา

[หน่วย]
Description=staging.gunicorn socket

[เบ้า]
ListenStream=/run/staging.gunicorn.sock

[ติดตั้ง]
WantedBy=sockets.target

สุดท้ายนี่คือการกำหนดค่า nginx ของเรา

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name example.com www.example.com;
    ส่งคืน 302 https://$server_name$request_uri;
}

เซิร์ฟเวอร์ {
    # การกำหนดค่า SSL

    ฟัง 443 ssl http2;
    ฟัง [::]:443 ssl http2;
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_client_certificate /etc/ssl/cloudflare.crt;
    เปิด ssl_verify_client;

    รูท /var/www/html;
    ดัชนี index.html index.htm index.nginx-debian.html;    

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง / คงที่ / {
        รูท /home/admin/example1;
    }

    ที่ตั้ง / {
        รวม proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name staging.example.com www.staging.example.com;
    ส่งคืน 302 https://$server_name$request_uri;
}

เซิร์ฟเวอร์ {
    # การกำหนดค่า SSL

    ฟัง 443 ssl http2;
    ฟัง [::]:443 ssl http2;
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_client_certificate /etc/ssl/cloudflare.crt;
    เปิด ssl_verify_client;

    รูท /var/www/html;
    ดัชนี index.html index.htm index.nginx-debian.html;    

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง / คงที่ / {
        รูท /home/admin/example1staging;
    }

    ที่ตั้ง / {
        รวม proxy_params;
        proxy_pass http://unix:/run/staging.gunicorn.sock;
    }
}

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

Score:0
ธง us

บล็อกการกำหนดค่า SSL ทั้งสองของคุณหายไป ชื่อเซิร์ฟเวอร์ คำสั่ง ดังนั้น nginx จึงใช้โฮสต์เสมือนเริ่มต้นสำหรับคำขอทั้งหมด และในกรณีนี้ nginx จะเป็นโฮสต์แรกที่รับฟังพอร์ต 443

คุณต้องเพิ่มที่เหมาะสม ชื่อเซิร์ฟเวอร์ คำแนะนำในการแก้ไขปัญหา

Ixion Chowdhury avatar
fr flag
ขอบคุณมาก! มันใช้งานได้อย่างมีเสน่ห์!
Score:0
ธง ph

ฟัง 443 ssl http2;

server_name example.com www.example.com;

ฟัง 443 ssl http2;

server_name staging.example.com www.staging.example.com;

แก้ไขไฟล์ nginx ของคุณในส่วน https

Ixion Chowdhury avatar
fr flag
ใช่ฉันทำและใช้งานได้ ขอบคุณมาก!

โพสต์คำตอบ

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