web-dev-qa-db-ja.com

Nginxはファイルをダウンロードしますが、コンテンツは表示されません

私のウェブサイトには、「root-validation-file」という拡張子のないドキュメントルートに置く必要がある検証ファイルがあります。

しかし、ブラウザからそれを開こうとすると、開くのではなくダウンロードされ、(。txt)などの拡張子を持つ他のすべてのファイルを正常に開くことができます、

私のnginx(1.12)設定:

server {
listen 80;
listen 443 ssl;

root /var/www/website;
error_log /var/log/nginx/website-error.log;
access_log /var/log/nginx/website-access.log;

index index.php index.html index.htm index.nginx-debian.html;

server_name website.com;
ssl_certificate /etc/ssl/website/nginx_bundle.crt;
ssl_certificate_key /etc/ssl/website/website.key;

location / {
    index index.php index.html;
    try_files $uri $uri/ =404 /index.php?q=$uri&$args;
}

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
    root /var/www/website;

    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /var/www/website/$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;

}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
    deny all;
}
2
MohammedSimba

nginxは、拡張機能からコンテンツタイプを決定します。ファイルに拡張子がない場合、default_typeが使用されます。

独自のlocationブロック内で処理することにより、このファイルのコンテンツタイプを明示的に設定できます。

location = /validation-file {
    types {}
    default_type text/html;
}

default_typeをファイルに含まれているものに設定します。 text/htmlまたはtext/plainなど。

詳細については、 このドキュメント を参照してください。

3
Richard Smith