On 1/24/22 11:15, Reinis Rozitis wrote:
I want to be able to do an redirect, but only one time, the hit it should
not redirect.

If a client visits an web-store it will get redirected to the region
specific store, but if then then manually select an other store there it
should not redirect back again. I don't know if a nginx session cookie is
possible or an way to use the nginx upstream module?

If your website uses cookies (and sets some information you can identify a
region) one way would be to make a decision on that - nginx can access
cookies using $cookie_COOKIENAME variable(s) so you can add it as an if() or
map conditions to decide if a redirect is needed.

I got it working! I am not sure of the performance hit, maybe someone know how to make this more effective?

I noticed that the if statements have an higher priority then the location sections and it does not follow the order in the configuration file. I needed an additional if statement to check the request URL...

if ($cookie_REDIRECT != false) {
        set $redirect true;
}
if ($request_uri ~ "^/(noredirect)/(.*)$" ) {
        set $redirect false;
}
location ~ ^/(noredirect)/ {
add_header Set-Cookie "REDIRECT=false;Domain=$host;Path=/;Max-Age=31536000";
        rewrite ^/noredirect(.*)$ https://$host$1 redirect;
}
if ($geoip2_data_country_iso_code = IE) {
        set $redirect ${redirect}+test02.example.nl;
}
if ($redirect = true+test02.example.nl) {
        return 302 https://test02.example.nl$request_uri;
}
if ($geoip2_data_country_iso_code != GB) {
        set $redirect ${redirect}+test03.example.nl;
}
if ($redirect = true+test03.example.nl) {
        return 302 https://test03.example.nl$request_uri;
}

if ($geoip2_data_country_iso_code = NL) {
        set $MAGE_RUN_CODE_ORG storeview07;
}
if ($geoip2_data_country_iso_code = US) {
        set $MAGE_RUN_CODE_ORG storeview08;
}
if ($geoip2_data_country_iso_code = DE) {
        set $MAGE_RUN_CODE_ORG storeview09;
}
location / {
        proxy_pass http://127.0.0.1:6081;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}

If I am falling in a pitfall somehow let me know, it seems to work well.

Kind regards,

Jelle
_______________________________________________
nginx mailing list -- nginx@nginx.org
To unsubscribe send an email to nginx-le...@nginx.org

Reply via email to