Score:1

NGINX ไม่ให้บริการไฟล์รูปภาพอย่างถูกต้อง

ธง es

ฉันได้ตั้งค่าเว็บไซต์ django ที่จะให้บริการโดย Nginx ทุกอย่างทำงานได้อย่างสมบูรณ์จนกระทั่งรูปภาพหยุดแสดงเมื่อเร็ว ๆ นี้

ฉันพยายามตรวจสอบสาเหตุที่เป็นไปได้ของการพัฒนาที่แปลกประหลาดนี้โดยใช้ ขด จากนั้นตระหนักว่าประเภทเนื้อหาไม่เป็นที่รู้จัก ประเภทเนื้อหา: รูปภาพ/jpeg คืน ประเภทเนื้อหา: text/html; ชุดอักขระ=utf-8

พฤติกรรมนี้ดูแปลก ๆ ตามที่ฉันได้รวมไว้ mime.types ในของฉัน nginx.conf ไฟล์. ด้านล่างนี้คือตัวอย่างคำตอบจาก ขด สั่งการ

user@server:~$ curl -I https://domain.name/media/upload/image.jpg
HTTP/1.1 200 ตกลง
เซิร์ฟเวอร์: nginx/1.18.0 (Ubuntu)
วันที่: อาทิตย์ 29 พฤษภาคม 2022 00:45:53 GMT
ประเภทเนื้อหา: text/html; ชุดอักขระ=utf-8
ความยาวเนื้อหา: 11392
การเชื่อมต่อ: มีชีวิตอยู่
X-Frame-Options: ปฏิเสธ
วารี: คุกกี้
X-Content-Type-Options: ไร้สาระ
นโยบายผู้อ้างอิง: แหล่งกำเนิดเดียวกัน
Cross-Origin-Opener-Policy: จุดกำเนิดเดียวกัน
ตั้งค่าคุกกี้: csrftoken=T9Z3jrp4dzOAINxo6JzOUyjiGwGYHoc37TZaYsIOmHHyrQUw30vI6ETIAcy66Wnr; หมดอายุ=อาทิตย์ 28 พฤษภาคม 2023 00:45:53 GMT; อายุสูงสุด=31449600; เส้นทาง=/; SameSite=หละหลวม

ของผมนี่เต็มๆ nginx.conf ไฟล์

ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;

เหตุการณ์ {
    worker_connections 768;
    # multi_accept บน;
}

http {

    ##
    # การตั้งค่าพื้นฐาน
    ##

    ส่งไฟล์บน;
    tcp_nopush บน;
    types_hash_max_size 2048;
    # ปิด server_tokens;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect ปิด;

    รวม /etc/nginx/mime.types;
    แอปพลิเคชัน default_type/octet-stream;

    ##
    # การตั้งค่า SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # วาง SSLv3 อ้างอิง: พุดเดิ้ล
    เปิด ssl_prefer_server_ciphers;

    ##
    # การตั้งค่าการบันทึก
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # การตั้งค่า Gzip
    ##

    เปิด gzip;

    # gzip_vary บน;
    # gzip_proxyed ใด ๆ ;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types ข้อความ/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชัน json/ข้อความจาวาสคริปต์/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml+rss ข้อความ/จาวาสคริปต์;

    ##
    # การกำหนดค่าโฮสต์เสมือน
    ##

    รวม /etc/nginx/conf.d/*.conf;
    รวม /etc/nginx/sites-enabled/*;
}


#จดหมาย {
# # ดูตัวอย่างสคริปต์การตรวจสอบได้ที่:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "ผู้ใช้";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# เซิร์ฟเวอร์ {
# ฟัง localhost:110;
#โปรโตคอลpop3;
# เปิดพร็อกซี;
# }
#
# เซิร์ฟเวอร์ {
# ฟัง localhost:143;
# โปรโตคอล imap;
# เปิดพร็อกซี;
# }
#}

เนื้อหาของ /etc/nginx/sites-enabled/app

# /etc/nginx/sites-enabled

เซิร์ฟเวอร์ {
    ชื่อเซิร์ฟเวอร์ my_server_IP my_server_NAME;

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง / คงที่ / {
        รูท / บ้าน / ผู้ใช้ / แอพ;
    }

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

    ฟัง 443 ssl; 
    ssl_certificate /path/to/certfullchain.pem; 
    ssl_certificate_key /path/to/certprivkey.pem; 
    รวม /etc/cert-provider/options-ssl-nginx.conf; 
    ssl_dhparams /etc/cert-provider/ssl-dhparams.pem; 






}

เซิร์ฟเวอร์ {
    ถ้า ($host = www.domain.name {
        ส่งคืน 301 https://$host$request_uri;
    } 


    ถ้า ($host = domain.name) {
        ส่งคืน 301 https://$host$request_uri;
    } 


    ฟัง 80;
    ชื่อเซิร์ฟเวอร์ my_server_IP my_server_NAME;
    กลับ 404; 




}

บันทึก: ฉันให้บริการเว็บไซต์นี้ด้วย gunicorn

Score:1
ธง es

ฉันสามารถแก้ไขปัญหานี้ได้โดยเพิ่มคำสั่งตำแหน่งใหม่ที่ตรงกับไฟล์มีเดียของฉัน ในกรณีนี้ ไฟล์ของฉันถูกอัพโหลดไปที่ สื่อ

ฉันแก้ไขปัญหานี้โดยเพิ่มสิ่งต่อไปนี้ในบล็อกเซิร์ฟเวอร์ของฉัน

  สถานที่ /สื่อ/ {
        รูท / บ้าน / ผู้ใช้ / แอพ;
    }

ตอนนี้ฉันใหม่ /etc/nginx/sites-enabled/app ลักษณะเช่นนี้

# /etc/nginx/sites-enabled

เซิร์ฟเวอร์ {
    ชื่อเซิร์ฟเวอร์ my_server_IP my_server_NAME;

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง / คงที่ / {
        รูท / บ้าน / ผู้ใช้ / แอพ;
    }
    สถานที่ /สื่อ/ {
        รูท / บ้าน / ผู้ใช้ / แอพ;
    }

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

    ฟัง 443 ssl; 
    ssl_certificate /path/to/certfullchain.pem; 
    ssl_certificate_key /path/to/certprivkey.pem; 
    รวม /etc/cert-provider/options-ssl-nginx.conf; 
    ssl_dhparams /etc/cert-provider/ssl-dhparams.pem; 






}

เซิร์ฟเวอร์ {
    ถ้า ($host = www.domain.name {
        ส่งคืน 301 https://$host$request_uri;
    } 


    ถ้า ($host = domain.name) {
        ส่งคืน 301 https://$host$request_uri;
    } 


    ฟัง 80;
    ชื่อเซิร์ฟเวอร์ my_server_IP my_server_NAME;
    กลับ 404; 




}

โพสต์คำตอบ

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