AI总结

这段文本是一个详细的 Nginx 服务器配置指南,旨在帮助用户解决在使用 Alist 时遇到的上传文件错误。它包括了以下关键步骤:

  1. 登录管理面板:用户需要登录到服务器的管理面板。

  2. 选择域名:在管理面板中找到自己的 Alist 域名。

  3. 备份当前配置:在更改配置之前,用户应该备份当前的配置。

  4. 替换配置代码:用户需要用提供的示例代码替换现有的配置代码,并替换其中的占位符为自己的实际信息。

  5. 配置代码说明:提供了配置代码的详细解释,包括监听端口、服务器域名、日志路径、SSL 证书路径、重定向规则、静态文件缓存策略等。

  6. 注意事项:强调在更改配置之前要仔细阅读示例代码,并在更改后进行测试。

前情提要

如果alist上传报错请按照下方步骤操作

1.打开1panel管理面板找到网站进去

2.选中自己的alist域名 点击后方的配置

3.进入配置点击配置文件

4.更改前先看好我打码地方的配置自己保存好等会儿需要使用

5.保留好你原本的配置万一有问题好还原 备份好后直接改好下方代码替换原来的代码

自己的域名

自己的域名路径

 server_name 自己的域名; 
access_log /www/sites/自己的域名/log/access.log main; 
    error_log /www/sites/自己的域名/log/error.log; 
 ssl_certificate /www/sites/自己的证书地址/ssl/fullchain.pem; 
    ssl_certificate_key /www/sites/自己的证书地址/ssl/privkey.pem; 

改好复制代码替换正常来讲无需更改其他

示例配置代码

看清再用

server {
    listen 8080; 
    listen [::]:8080; 
    listen 4443 ssl http2; 
    listen [::]:4443 ssl http2; 
    server_name 自己的域名; 
    index index.php index.html index.htm default.php default.htm default.html; 

    client_max_body_size 0;  # 不限制上传大小

    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Host $server_name; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 

    access_log /www/sites/自己的域名/log/access.log main; 
    error_log /www/sites/自己的域名/log/error.log; 

    location ^~ /.well-known/acme-challenge {
        allow all; 
        root /usr/share/nginx/html; 
    }

    include /www/sites/al.xinz.fun/proxy/*.conf; 

    if ($scheme = http) {
        return 301 https://$host$request_uri; 
    }

    ssl_certificate /www/sites/自己的证书地址/ssl/fullchain.pem; 
    ssl_certificate_key /www/sites/自己的证书地址/ssl/privkey.pem; 
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; 
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED; 
    ssl_prefer_server_ciphers on; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    error_page 497 https://$host$request_uri; 
    proxy_set_header X-Forwarded-Proto https; 
    add_header Strict-Transport-Security "max-age=31536000"; 

    location ~ .*\.(js|css|png|jpg|jpeg|gif|ico|bmp|swf|eot|svg|ttf|woff|woff2)$ {
        expires 30d; 
        log_not_found off; 
        valid_referers none al.xinz.fun; 
        if ($invalid_referer) {
            return 404; 
            access_log off; 
        }
    }

    # 代理缓冲设置
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    
    # 设置临时文件写入大小
    proxy_temp_file_write_size 512k;  # 设置为大于256k
}

配置说明

server {
    listen 8080;  # 监听 8080 端口(HTTP)
    listen [::]:8080;  # 监听 IPv6 的 8080 端口
    listen 4443 ssl http2;  # 监听 4443 端口(HTTPS,支持 HTTP/2)
    listen [::]:4443 ssl http2;  # 监听 IPv6 的 4443 端口(HTTPS,支持 HTTP/2)
    
    server_name 自己的域名;  # 设置服务器的域名(替换为您的域名)
    
    index index.php index.html index.htm default.php default.htm default.html;  # 默认文档列表

    client_max_body_size 0;  # 不限制上传文件的大小

    # 设置转发头部,确保代理请求中的信息
    proxy_set_header Host $host;  # 将主机头设置为请求中的主机
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 添加客户端 IP 到转发头
    proxy_set_header X-Forwarded-Host $server_name;  # 设置转发的主机头
    proxy_set_header X-Real-IP $remote_addr;  # 将真实 IP 设置为远程地址
    proxy_http_version 1.1;  # 设置代理使用的 HTTP 版本
    proxy_set_header Upgrade $http_upgrade;  # 支持 WebSocket 升级
    proxy_set_header Connection $http_connection;  # 设置连接头

    access_log /www/sites/自己的域名/log/access.log main;  # 设置访问日志路径
    error_log /www/sites/自己的域名/log/error.log;  # 设置错误日志路径

    location ^~ /.well-known/acme-challenge {
        allow all;  # 允许所有访问
        root /usr/share/nginx/html;  # 设置根目录以处理 Let's Encrypt 验证
    }

    include /www/sites/al.xinz.fun/proxy/*.conf;  # 引入其他配置文件

    if ($scheme = http) {
        return 301 https://$host$request_uri;  # 强制 HTTP 重定向到 HTTPS
    }

    ssl_certificate /www/sites/自己的证书地址/ssl/fullchain.pem;  # SSL 证书路径
    ssl_certificate_key /www/sites/自己的证书地址/ssl/privkey.pem;  # SSL 证书密钥路径
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;  # 启用的 SSL/TLS 协议
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED;  # SSL 加密套件
    ssl_prefer_server_ciphers on;  # 优先使用服务器的加密套件
    ssl_session_cache shared:SSL:10m;  # SSL 会话缓存设置
    ssl_session_timeout 10m;  # SSL 会话超时时间
    error_page 497 https://$host$request_uri;  # 处理 HTTP to HTTPS 的错误页面
    proxy_set_header X-Forwarded-Proto https;  # 设置转发协议为 HTTPS
    add_header Strict-Transport-Security "max-age=31536000";  # 启用 HSTS,设置最大生存时间为一年

    location ~ .*\.(js|css|png|jpg|jpeg|gif|ico|bmp|swf|eot|svg|ttf|woff|woff2)$ {
        expires 30d;  # 设置静态文件的过期时间为 30 天
        log_not_found off;  # 关闭未找到文件的日志
        valid_referers none al.xinz.fun;  # 允许的引荐来源
        if ($invalid_referer) {
            return 404;  # 如果来源无效,返回 404
            access_log off;  # 关闭访问日志
        }
    }

    # 代理缓冲设置
    proxy_buffer_size 128k;  # 设置单个缓冲区的大小
    proxy_buffers 4 256k;  # 设置缓冲区的数量和大小
    proxy_busy_buffers_size 256k;  # 设置繁忙缓冲区的大小
    
    # 设置临时文件写入大小
    proxy_temp_file_write_size 512k;  # 设置为大于256k,以满足配置要求
}

alist播放失败

更改示例

不可复制粘贴

server {
    listen 8080;
    listen [::]:8080;

    server_name al.xinz.fun;

    # 强制重定向到 HTTPS
    if ($scheme = http) {
        return 301 https://$host:4443$request_uri;
    }

    # 处理 HTTP 请求
    location / {
        proxy_pass http://192.168.31.91:5244;  # 替换为实际后端服务地址
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        client_max_body_size 0;  # 不限制传输大小
    }

    # Let's Encrypt 验证
    location ^~ /.well-known/acme-challenge {
        allow all;
        root /usr/share/nginx/html; 
    }

    # 日志
    access_log /www/sites/al.xinz.fun/log/access.log main; 
    error_log /www/sites/al.xinz.fun/log/error.log; 
}

server {
    listen 4443 ssl http2;
    listen [::]:4443 ssl http2;

    server_name al.xinz.fun;

    # SSL 证书文件路径
    ssl_certificate /www/sites/al.xinz.fun/ssl/fullchain.pem; 
    ssl_certificate_key /www/sites/al.xinz.fun/ssl/privkey.pem; 

    # SSL 配置
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; 
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED';
    ssl_prefer_server_ciphers on; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 

    # 处理 HTTPS 请求
    location / {
        proxy_pass http://192.168.31.91:5244;  # 替换为实际后端服务地址
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        client_max_body_size 0;  # 不限制传输大小
    }

    # 错误页面处理
    error_page 497 https://$host$request_uri; 

    # HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; 
}

在原有配置上自己更改