0

I have problem with my nginx server in version nginx:1.19-alpine running on Docker.

Static files with .json extension are served with mime type text/html.

Request:

curl 'example.json' -H 'Accept: application/json' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: http://192.168.16.201/' -H 'X-Requested-With: XMLHttpRequest'

Response from NGINX

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 13 Jul 2021 12:23:51 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 14746
Connection: keep-alive
Content-Encoding: gzip
Cache-Control: no-store
Accept-Ranges: bytes
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Last-Modified: Thu, 01 Jan 1970 00:00:01 GMT

Important is Content-Type: text/html;charset=utf-8 , which must be application/json .

/etc/nginx/mime.types is configured correctly with .json to application/json:

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}

nginx.conf

user  nginx;
worker_processes  auto;

error_log  stderr warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    server_tokens off;

    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  stdout  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    client_max_body_size 10M;

    include /etc/nginx/conf.d/*.conf;
}

We have default.conf

server {
    listen 80 default_server;
    server_name  localhost;

    proxy_buffer_size   16k;
    proxy_buffers 64 4k;
    proxy_busy_buffers_size   24k;

    location / {
      proxy_pass http://upstream1;
    }

    location /kie-server {
      proxy_pass http://upstream2/kie-server;
      proxy_set_header    Host               $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-Host   $host;
      proxy_set_header    X-Forwarded-Server $host;
      proxy_set_header    X-Forwarded-Port   $server_port;
      proxy_set_header    X-Forwarded-Proto  $scheme;
   }


    # redirect server error pages to the static page /50x.html
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
Marcel GJS
  • 234
  • 1
  • 10
  • Check the contents of the returned file. This problem is usually because the file is not found and Nginx is configured to return `index.html` instead of 404. – Richard Smith Jul 13 '21 at 13:11
  • Hi. Response content is right .json file content with status 200. – Marcel GJS Jul 13 '21 at 13:18
  • Share your nginx config as well, it sounds like maybe your config is busted. (This probably should've been posted on Super User or Server Fault rather than SO though as it's not reallya programming issue) – Thomas Ward Jul 16 '21 at 14:37
  • @ThomasWard I added nginx.conf. – Marcel GJS Jul 21 '21 at 12:09
  • No no you didn't. Not completely anyways. We need all the conf files under `/etc/nginx.conf.d/` as well which will hold your site configurations. – Thomas Ward Jul 22 '21 at 00:45
  • Yes. upstreams urls are hidden. default.conf with problematic server – Marcel GJS Jul 22 '21 at 09:10

1 Answers1

0

you can try to add next config the following block to /etc/nginx/sites/example.com.conf

location ~ \.json {
    add_header  Content-Type    application/json;
    proxy_pass http://lospec;

    include /etc/nginx/config/proxy/proxy.conf;
}
Paul Alexeev
  • 172
  • 1
  • 11