Use el encabezado X-Accel-Redirect de Nginx para descargar o simular el acceso a archivos

Use un navegador para acceder al archivo PDF cargado en el servidor, asumiendo que 20190412/171534680646.pdfel archivo /srv/upload/rcb/está bajo

Ahora aquí queremos simular el archivo pdf bajo /sfilela dirección real implementando la dirección de acceso , de la siguiente manera:/srv/upload/rcb/

  • La configuración
    se configura en el servidor nginx de la siguiente manera:
set $original_root "/srv/upload/rcb/";   # pdf上传后存放路径
location /sfile {
            internal;    # 重点
            alias $original_root;
        }
  • Interno se refiere al comando interno de Nginx, lo que significa que solo se pueden usar solicitudes internas y las solicitudes externas devuelven 404
  • código pitón
@restapi.bp.route('/sfile/<name:[A-Za-z0-9/._]+>', methods=["GET"])
async def sfile(request, name):
    r = json({"status": 0})
    r.headers['Content-Type'] = 'application/pdf'         # 文件类型
    r.headers['X-Accel-Redirect'] = f'/sfile/{name}'    #重定向
    return r
  • Al acceder a archivos como imágenes/videos/PDF, debe especificar el tipo de archivo en los encabezados ['Content-Type']; de lo contrario, el tipo predeterminado esapplication/json
  • headers['X-Accel-Redirect'] envía una solicitud interna al servidor, y Nginx reenviará el enlace a la dirección real

Dirección de solicitud: http://localhost:8080/XXX/sfile/20190412/171534680646.pdf

Si no es accesible, verifique que internalla Content-Typesuma sea adecuada.

Supongo que te gusta

Origin blog.csdn.net/quanqxj/article/details/89317140
Recomendado
Clasificación