我正在尝试在 Linux 上配置 NGINX 服务器,该服务器从目录下载任何文件。
但我面临的问题是,当文件是文本文件或文件名包含任何特殊字符(如空格和(“()”#“&”)时,浏览器将不会接受并且不会给我任何内容。
如何解决这个问题? 我的配置如下
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
#default_type application/*;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
index index.html index.htm;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {}
error_page 404/404.html; error_page 500 502 503 504/50x.html;
最佳答案
要下载文件而不是在浏览器中显示它们,MIME 类型应设置为 application/octet-stream
。 无论如何,它通常被声明为默认类型。
通常,nginx
使用文件扩展名来确定要使用的 MIME 类型,但可以通过使用空集指定 types
指令来在某个位置关闭此功能.
可以使用 URL 中的 % 编码字符来访问包含奇怪字符的文件名。
作为实验,您可能需要打开 autoindex
并关闭 index
来浏览文件。这也将告诉您,您的困难文件名也可以下载。
location / {
index not_a_file;
autoindex on;
types {}
}
注意:除了将其设置为一个不太可能的名称之外,我不知道关闭 index
的机制。默认的 index.html
可能不会与您的下载目录的内容冲突。
参见this document了解更多。
关于linux - 如何配置 NGINX 服务器下载目录中的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131398/