Override Content-Type header with proxied requests
Wandenberg Peixoto
wandenberg at gmail.com
Thu Aug 7 17:57:32 UTC 2014
Did you tried to only hide the header with
proxy_hide_header Content-Type;
and let nginx use the mime.types to set the content type?
Do not set the add_header Content-Type manually.
Let me know the result.
On Thu, Aug 7, 2014 at 12:57 PM, manish-ezest <nginx-forum at nginx.us> wrote:
> Hello wandenberg,
>
> Thank you for your response. I truly appreciate your help. I tried this
> options given below
>
> ######First Method###############
> 1. Edit nginx.conf and add
> map $uri $custom_content_type {
> default "text/html";
> ~(.*\.json)$ "application/json";
> }
>
> 2. Put the custom map in location directive
> location / {
> proxy_redirect off;
> proxy_set_header Host www-aaa.com.s3.amazonaws.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Referer www-aaa.com;
> proxy_pass http://www-aaa.com.s3.amazonaws.com/;
> add_header Pragma "no-cache";
> proxy_cache_valid 200 302 10m;
> proxy_read_timeout 60s;
> proxy_hide_header Content-Type;
> add_header Content-Type $custom_content_type;
> }
>
> ######Second Method###############
> 1. Edit nginx.conf and add
> map $uri $custom_content_type {
> default "text/html";
> ~(.*\.json)$ "application/json";
> }
>
> 2. Put the custom map in location directive
> location / {
> proxy_redirect off;
> proxy_set_header Host www-aaa.com.s3.amazonaws.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Referer www-aaa.com;
> proxy_pass http://www-aaa.com.s3.amazonaws.com/;
> add_header Pragma "no-cache";
> proxy_cache_valid 200 302 10m;
> proxy_read_timeout 60s;
> location ~ \.json$ {
> proxy_hide_header Content-Type;
> add_header Content-Type $custom_content_type;
> }
> }
>
> ##Third Method####################
>
> 1. Enter this in server block of nginx.
> location ~ \.json$ {
> types { }
> default_type application/json;
> }
>
> #################################
>
> 1. When I tried first method I put below content in "location / { }" and
> due
> to this the JSON file served as application/json but all other files loaded
> as text/html as it was default in the map directive which caused image/css
> to not load. I thought it would read the mime.types files and will select
> the appropriate Content-Type.
> #########################
> proxy_hide_header Content-Type;
> add_header Content-Type $custom_content_type;
> ##########################
>
> 2. When I tried second and third method, I am getting 404 because it is
> taking docroot as /var/empty
>
> 2014/08/07 17:13:22 [error] 14205#0: *33 open()
> "/var/empty/aaa/bbb/ccc/ddd/eee.json" failed (2: No such file or
> directory),
> client: 5.5.5.5., server: www-aaa.com, request: "GET
> /aaa/bbb/ccc/ddd/eee.json HTTP/1.1", host: "www.aaa.coml"
>
> So my question is where should I put the location ~\.json block(in location
> / {} or in server directive)?
>
> **************my NGINX.conf********************
> user nginx;
> worker_processes 1;
> error_log /var/log/nginx/error.log notice;
> pid /var/run/nginx.pid;
> worker_rlimit_nofile 30000;
> events {
> worker_connections 1024;
> }
> http {
> include /etc/nginx/mime.types;
> default_type application/octet-stream;
>
> log_format main '$remote_addr - $remote_user [$time_local] $request '
> '"$status" $body_bytes_sent "$http_referer" '
> '"$http_user_agent" "$http_x_forwarded_for"';
> log_format combined_time '$remote_addr - $remote_user [$time_local]'
> '"$request" $status $body_bytes_sent '
> '"$http_referer" "$http_user_agent" $request_time';
>
> access_log /var/log/nginx/access.log combined_time;
> include /etc/nginx/servers/*.conf;
> }
> **********************************************
>
> ******************************VHOST SETTING*****
> server {
> listen 80;
> server_name www-aaa.com;
> add_header Cache-Control off;
> expires 1d;
> root /var/empty;
> error_log /var/log/nginx/www.aaa.com-error.log;
> access_log /var/log/nginx/www.aaa.com-access.log
> combined_time;
> location = /favicon.ico {
> root /www;
> }
> proxy_intercept_errors on;
> error_page 400 401 402 403 404 406 407 408 409 410 411 412 413 414 415 416
> 417 495 496 497 500 501 502 503 504 505 506 507 = /error_page.pl;
> error_page 405 =200 $uri;
> location /error_page.pl {
> fastcgi_pass 127.0.0.1:8999;
> fastcgi_param REQUEST_URI $request_uri;
> fastcgi_pass_header "Status";
> }
>
> location / {
> proxy_redirect off;
> proxy_set_header Host www.aaa.com.s3.amazonaws.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Referer www.aaa.com;
> proxy_pass http://www.aaa.com.s3.amazonaws.com/;
> }
> }
> ***************************************************************************
>
> NOTE: All my files are served from s3 bucket and not a single files are in
> the server.
>
> --Manish
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?2,239473,252390#msg-252390
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20140807/16820478/attachment.html>
More information about the nginx
mailing list