agentzh
September 14, 2011 04:50AM
On Wed, Jun 8, 2011 at 9:16 PM, tobia <nginx-forum@nginx.us> wrote:
> Does nginx (or a module) provide functionality equivalent to httpd's
> ProxyPassReverseCookieDomain?
>
> Long explanation: I have a simple nginx reverse proxy
>
> server {
>  server_name external.domain.com;
>  location / {
>    proxy_pass http://backend.int/;
>  }
> }
>
> The problem is that Set-Cookie response headers contain
> ";Domain=backend.int", because the backend does not know it is being
> reverse proxied. Therefore the users' browsers dutifully reject such bad
> cookies.
>
> How can I rewrite the content of the Set-Cookie response headers,
> replacing ";Domain=backend.int" with ";Domain=external.domain.com"?
>

Now with the latest ngx_lua v0.3.1rc3, we can implement this with a
little inlined Lua in nginx.conf:

server_name external.domain.com;

location / {
proxy_pass http://backend.int/;

header_filter_by_lua '
local cookies = ngx.header.set_cookie
if not cookies then return end
local newcookies = {}
for i, val in ipairs(cookies) do
local newval = string.gsub(val, "([dD]omain)=[%w_-\\\\.]+",
"%1=external.domain.com")
table.insert(newcookies, newval)
end
ngx.header.set_cookie = newcookies
';
}

We can surely make this more portable by avoiding hard-coding the
"external.domain.com" literal in our Lua code and reference
ngx.var.server_name (i.e., the nginx variable $server_name) instead ;)

See the ngx_lua documentation for more details:

http://wiki.nginx.org/HttpLuaModule

The most relevant sections are

http://wiki.nginx.org/HttpLuaModule#header_filter_by_lua

and

http://wiki.nginx.org/HttpLuaModule#ngx.header.HEADER

Have fun!
-agentzh

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

Rewriting the domain part of Set-Cookie in a proxy_pass

tobia June 08, 2011 09:16AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

António P. P. Almeida June 08, 2011 09:36AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

tobia June 08, 2011 10:02AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

tobia June 08, 2011 10:06AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

Justin Cormack June 08, 2011 10:18AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

杨镭 June 08, 2011 03:32PM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

agentzh June 08, 2011 10:10PM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

tobia June 27, 2011 04:50AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

Maxim Dounin June 08, 2011 10:20AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

agentzh September 14, 2011 04:50AM

Re: Rewriting the domain part of Set-Cookie in a proxy_pass

agentzh September 14, 2011 05:26AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 244
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