Other headers disappear after adding Set-Cookie header
Unimatrix02
nginx-forum at nginx.us
Mon Aug 16 17:22:07 MSD 2010
Hi Maxim,
Thanks for your reply. I hereby provide the requested details.
[b]nginx -v output[/b]
nginx version: nginx/0.8.49
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
TLS SNI support disabled
configure arguments: --user=nginx --group=nginx
--prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi
--pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx
--with-http_secure_link_module --with-http_random_index_module
--with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module
--with-http_dav_module --with-http_flv_module
--with-http_gzip_static_module --with-http_stub_status_module
--with-http_perl_module --with-mail --with-mail_ssl_module
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
--with-ipv6
--add-module=/builddir/build/BUILD/nginx-0.8.49/nginx-upstream-fair
--add-module=/builddir/build/BUILD/nginx-0.8.49/nginx-upload-progress-module
--add-module=/builddir/build/BUILD/nginx-0.8.49/mod_zip-1.1.5
--add-module=/builddir/build/BUILD/nginx-0.8.49/nginx_upload_module-2.0.12
--add-module=/builddir/build/BUILD/nginx-0.8.49/nginx_mod_h264_streaming-2.2.7
[b]nginx.conf[/b]
user nginx;
worker_processes 2;
worker_cpu_affinity 0001 0010;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 8192;
use epoll;
}
http {
server_names_hash_bucket_size 64;
include /etc/nginx/ibood-mime.types;
include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream;
log_format common '$http_X_Cluster_Client_IP - $remote_user
[$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format main '$remote_addr $proxy_add_x_forwarded_for $remote_user
[$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"
"$http_x_cluster_client_ip"';
log_format details '$http_X_Cluster_Client_IP $remote_user
[$time_local] $request '
'"$status" $body_bytes_sent $bytes_sent
$connection "$pipe" '
'$msec $request_time $request_length '
'"$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log common;
sendfile on;
tcp_nopush on;
keepalive_timeout 15;
gzip off;
# --- Virtual hosts ---
[ irrelevant vhosts cut out ]
# The default server
server
{
listen 80 default backlog=1024;
server_name _;
server_name_in_redirect off;
# Look for affiliate in URI
set $aff_id "";
if ($request_uri ~* "(affiliate,|affiliate=)([a-z0-9]*)")
{
set $aff_id $2;
}
# Redirect old NL variants to main NL variant
rewrite ^/(depers|ad|iex|nu)/nl(.*)$ /nl/nl$2 permanent;
# Redirect banners to ext
rewrite ^/(banners/.*)$ http://ext.ibood.com/$1 permanent;
# Redirect feed requests to ext.ibood.com
rewrite ^/feeds/ibood_([^_/]+)_([^_/]+)\.xml$
http://feeds.ibood.com/ibood/$1_$2 permanent;
# Redirect all traffic on /feeds to ext.ibood.com
rewrite ^/feeds/(.*)$ http://ext.ibood.com/$1 permanent;
rewrite ^(/cms/.*)$ $1 break;
# Static content ----
rewrite ^([^\.]*)/imgdesign/([^\.]*)\.([^\.]*)$ /main/imgdesign/$2.$3
last;
rewrite ^([^.]*)/style/(.*)\.css$ /main/style/$2.css last;
rewrite ^([^.]*)/js/(.*)\.js$ /main/js/$2.js last;
rewrite ^/img/(.*)\.(swf|js|ico|gif|jpg|JPG|png|css)$ /img/$1.$2
last;
rewrite ^/templates_dynamic/(.*)\.(js|ico|gif|jpg|JPG|png|css)$
/templates_dynamic/$1.$2 last;
# Remove trailing slash from .html URIs
rewrite ^(.+)\.html/?$ $1.html last;
# Rewrite for affiliate handling
#if ($request_uri ~
"^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de).*(affiliate,|affiliate=).*")
#{
# rewrite ^.*$ /handle_affiliate.php last;
#}
# Serve static pages -----
# Only if not containing "affiliate"
#if ($request_uri !~ "(affiliate=|affiliate,)" )
#{
rewrite
^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)/(product_specs/.*)$
/static/generated/$1/$2 last;
rewrite ^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)(\/?)$
/static/generated/$1/index.html last;
rewrite ^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)/index.*
/static/generated/$1/index.html last;
#}
# Redirect to splash page if request uri is still /
rewrite ^/$ /index.html last;
# ----
# Serve generated HTML files directly, but expire immediately
location ~ /static/generated/.*\.html$
{
# Set cookie with affiliate ID, if present
if ($aff_id != "")
{
add_header Set-Cookie "iboodaffiliates=$aff_id; path=/;
domain=.ibood.com;";
}
add_header X-DebugInfo aff_id=$aff_id;
add_header X-Info "Served by nginx 1:$uri";
root /var/www/html;
expires -1h;
}
# Serve static files directly
location ~* \.(jpg|jpeg|gif|css|png|js|ico|xml|swf|pdf|doc|cur)$
{
root /var/www/html;
access_log off;
# expires 30d;
expires 12h;
add_header X-Info "Served by nginx 2:$uri";
}
# Serve generated static pages
location /static/generated
{
add_header X-DebugInfo aff_id=$aff_id;
# Set cookie with affiliate ID, if present
if ($aff_id != "")
{
#add_header Set-Cookie "testcookie=$aff_id; path=/;";
}
root /var/www/html;
access_log off;
expires 12h;
add_header X-Info "Served by nginx 3:$uri";
}
# Set default languages
#rewrite ^/pl/?$ /pl/pl/ permanent;
#rewrite ^/nl/?$ /nl/nl/ permanent;
#rewrite ^/de/?$ /de/de/ permanent;
#rewrite ^/uk/?$ /uk/en/ permanent;
#rewrite ^/be/?$ /be/nl/ permanent;
#rewrite ^/ie/?$ /ie/en/ permanent;
#rewrite ^/$ /index.html last;
#rewrite ^(/cms/.*)$ $1 break;
# Pass calls to API client through without rewrites
#rewrite ^(/ac/.*)$ $1 break;
# Don't rewrite request to affiliate handler
#rewrite ^(/handle_affiliate.php) $1 break;
# Send everything to front controller
#rewrite ^.*$ /main/frontend.php break;
location /
{
add_header X-Info "Served by apache";
proxy_set_header Host $host;
proxy_set_header X-Cluster-Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Request-URI $request_uri;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
error_page 404 /main/404.php;
}
}
[b]debug log[/b]
2010/08/16 15:12:22 [notice] 24579#0: *1
"(affiliate,|affiliate=)([a-z0-9]*)" matches
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^/(depers|ad|iex|nu)/nl(.*)$"
does not match "/nl/nl/index/affiliate,Affilinet/", client:
192.168.32.50, server: _, request: "GET
/nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host: "r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^/(banners/.*)$" does not
match "/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50,
server: _, request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1",
host: "r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/feeds/ibood_([^_/]+)_([^_/]+)\.xml$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^/feeds/(.*)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^(/cms/.*)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^([^\.]*)/imgdesign/([^\.]*)\.([^\.]*)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^([^.]*)/style/(.*)\.css$"
does not match "/nl/nl/index/affiliate,Affilinet/", client:
192.168.32.50, server: _, request: "GET
/nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host: "r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^([^.]*)/js/(.*)\.js$" does
not match "/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50,
server: _, request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1",
host: "r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/img/(.*)\.(swf|js|ico|gif|jpg|JPG|png|css)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/templates_dynamic/(.*)\.(js|ico|gif|jpg|JPG|png|css)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 "^(.+)\.html/?$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)/(product_specs/.*)$"
does not match "/nl/nl/index/affiliate,Affilinet/", client:
192.168.32.50, server: _, request: "GET
/nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host: "r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)(\/?)$" does not match
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1
"^/(pl/pl|nl/nl|de/de|uk/en|be/nl|ie/en|bild/de)/index.*" matches
"/nl/nl/index/affiliate,Affilinet/", client: 192.168.32.50, server: _,
request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1", host:
"r.dev.ibood.com"
2010/08/16 15:12:22 [notice] 24579#0: *1 rewritten data:
"/static/generated/nl/nl/index.html", args: "", client: 192.168.32.50,
server: _, request: "GET /nl/nl/index/affiliate,Affilinet/ HTTP/1.1",
host: "r.dev.ibood.com"
I hope this helps to figure it out. My idea is that it has something to
do with the placement of the add_header call in a specific location
block but I haven't been able to reproduce this problem with a simpler
server block.
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,120295,120324#msg-120324
More information about the nginx
mailing list