Tôi đã thiết lập một trang web django sẽ được phục vụ bởi Nginx, mọi thứ vẫn hoạt động hoàn hảo cho đến khi hình ảnh ngừng hiển thị gần đây.
Tôi đã thử kiểm tra nguyên nhân có thể của sự phát triển kỳ lạ này bằng cách sử dụng Xoăn
và sau đó nhận ra rằng Loại nội dung không được công nhận là Loại nội dung: hình ảnh/jpeg
trả về một Loại nội dung: văn bản/html; bộ ký tự = utf-8
Hành vi này có vẻ lạ như tôi đã bao gồm mime.types trong tôi nginx.conf tập tin.
Dưới đây là một ví dụ phản hồi từ Xoăn
chỉ huy
user@server:~$ curl -I https://domain.name/media/upload/image.jpg
HTTP/1.1 200 OK
Máy chủ: nginx/1.18.0 (Ubuntu)
Ngày: CN, 29 tháng 5 năm 2022 00:45:53 GMT
Loại nội dung: văn bản/html; bộ ký tự = utf-8
Độ dài nội dung: 11392
Kết nối: giữ nguyên
Tùy chọn khung X: TỪ CHỐI
Thay đổi: Cookie
X-Content-Type-Options: nosniff
Chính sách giới thiệu: cùng nguồn gốc
Cross-Origin-Opener-Policy: cùng nguồn gốc
Đặt cookie: csrftoken=T9Z3jrp4dzOAINxo6JzOUyjIGwGYHoc37TZaYsIOmHHyrQUw30vI6ETIAcy66Wnr; hết hạn=CN, ngày 28 tháng 5 năm 2023 00:45:53 GMT; Tuổi tối đa=31449600; Đường dẫn=/; SameSite=Lax
Đây là đầy đủ của tôi nginx.conf
tập tin
dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;
sự kiện {
công_nhân kết_nối 768 ;
# đa_chấp vào ;
}
http {
##
# Cài đặt cơ bản
##
gửi tệp trên;
bật tcp_nopus;
loại_hash_max_size 2048;
# server_token tắt;
# server_name_hash_bucket_size 64;
# máy chủ_tên_trong_chuyển hướng tắt;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
##
# Cài đặt SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
bật ssl_prefer_server_ciphers;
##
# Cài đặt ghi nhật ký
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Cài đặt Gzip
##
bật gzip;
# gzip_vary bật;
# gzip_proxied bất kỳ;
# gzip_comp_cấp 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;
##
# Cấu hình máy chủ ảo
##
bao gồm /etc/nginx/conf.d/*.conf;
bao gồm /etc/nginx/sites-enabled/*;
}
#email {
# # Xem tập lệnh xác thực mẫu tại:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "NGƯỜI DÙNG";
# # khả năng của imap "IMAP4rev1" "UIDPLUS";
#
# người phục vụ {
# nghe máy chủ cục bộ: 110;
# giao thức pop3;
# bật proxy;
# }
#
# người phục vụ {
# nghe localhost:143;
# hình ảnh giao thức;
# bật proxy;
# }
#}
nội dung của /etc/nginx/sites-enabled/app
# /etc/nginx/sites-enabled
người phục vụ {
server_name my_server_IP my_server_NAME;
vị trí = /favicon.ico { truy cập_đăng xuất; log_not_found tắt; }
vị trí /tĩnh/ {
gốc/nhà/người dùng/ứng dụng;
}
địa điểm / {
bao gồm proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
nghe 443 ssl;
ssl_certificate /path/to/certfullchain.pem;
ssl_certificate_key /path/to/certprivkey.pem;
bao gồm /etc/cert-provider/options-ssl-nginx.conf;
ssl_dhparam /etc/cerrt-provider/ssl-dhparams.pem;
}
người phục vụ {
nếu ($host = www.domain.name {
trả lại 301 https://$host$request_uri;
}
nếu ($ máy chủ = tên miền) {
trả lại 301 https://$host$request_uri;
}
nghe 80;
server_name my_server_IP my_server_NAME;
trả lại 404;
}
Ghi chú: Tôi đang phục vụ trang web này với gunicorn