Welcome! Log In Create A New Profile

Advanced

Tomcat behind Nginx resulting in jsessionids in url

Tobias Hipp
October 08, 2012 11:02AM
Hello everybody,

I'm trying to set up nginx as a reverse proxy and softwareloadbalancer.
The backend is built by some tomcat servers.
Using apache as a reverse proxy everything goes well, but using nginx
the following occurs:

1.) With cookies turned off in the browser, links and urls look like this:
http://subdomain.example.com/mobile/details%3Bjsessionid%3DF42AFDC7C01E7295B29B143ED6F0772F;jsessionid=F42AFDC7C01E7295B29B143ED6F0772F?someParams=someValues
Somehow, the jsessionid is there twice, but once it is URL-Encoded.

With cookies enabled, links and urls look like this:
http://subdomain.example.com/mobile/details;jsessionid=F42AFDC7C01E7295B29B143ED6F0772F?someParams=someValues

Why is this happening?

2.) Some modules of the site are shown at least twice, again only while
using nginx as reverse proxy. How did I achiev that?

Here is my configuration:

nginx.conf:
user www-data www-data;
worker_processes 6;
worker_priority 0;
error_log /var/log/nginx/error.log;
#log_not_found off;
worker_cpu_affinity 000001 000010 000100 001000 010000 100000;
events {
multi_accept off;
worker_connections 6144; #Muss eventuell an die Hardware
angepasst werden. Erlaubt derzeit 6 * 6144 gleichzeitige Anfragen)

}

http {

log_format test_debug '$remote_addr - $remote_user [$time_local]
' "$request " $status ' Arguments: $args';
include /my/config/nginx/upstreams.conf;
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# include /etc/nginx/conf.d/*.conf;
include /my/config/nginx/sites/*.conf;
}

proxy.conf:
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_max_temp_file_size 0;

proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

proxy_pass_header Set-Cookie;

upstreams.conf:

upstream service1 {
ip_hash;
server 192.168.1.117:8080 weight=1 max_fails=10 fail_timeout=60s;
server 192.168.1.115:8080 weight=1 max_fails=10 fail_timeout=60s;
}
upstream service2 {
ip_hash;
server 192.168.1.117:7080 weight=1 max_fails=10 fail_timeout=60s;
server 192.168.1.115:7080 weight=1 max_fails=10 fail_timeout=60s;
}

/my/config/nginx/sites/service1.conf:

server {
error_log subdomain_error.log;
access_log subdomain_access.log test_debug;
rewrite_log on;
include /my/config/nginx/proxy.conf;
listen 80;
server_name subdomain.example.com;
rewrite "^/([^%]+)[^;]*([^?]+)?(\?{0,1}.*)" /$1$2$3; #used to
kick out the wrong jsessionid befor passing the request, avoiding a 404
if ($http_cookie ~* "jsessionid=([^;]+)(?:;|$)") {
set $co "jsessionid=$1";
}
location = / {
proxy_set_header Cookie $co;
proxy_pass http://service1/?param=value;
}

location ~* "^/(images|css|js|userimages)/(.*)$" {
proxy_pass http://service1/$1/$2;
}

location ~* "^/(.*\.(jpg|gif|png))$" {
proxy_pass http://service1/$1?;
}

location / {
proxy_set_header Cookie $co;
proxy_pass http://service1;
}
}

server {
error_log /var/log/nginx/subdomain_ssl_error.log;
rewrite_log on;
listen 443 ssl;
server_name subdomain.example.com;
ssl_certificate
/raumo/config/nginx/zertifikate/subdomain.example.com.crt;
ssl_certificate_key
/raumo/config/nginx/zertifikate/subdomain.example.com.key;
if ($args_param !~ "value"){
set $args_param "value";
}
location = / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://service1;
}
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://service1;
}
}

server{
error_log /var/log/nginx/subdomain_redir_error.log;
listen 80;
server_name example.com;
location / {
return 301 http://subdomain.example.com;
}
}

server{
listen 80;
server_name www.subdomain.com;
location / {
return 301 http://subdomain.example.com;
}
}

Would apreciate any help.

Thank you all in advance

T.Hipp

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Tomcat behind Nginx resulting in jsessionids in url

Tobias Hipp October 08, 2012 11:02AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 224
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready