/ home / nginx / nginx url rewrite - a redirect to a main site /

Nginx URL Rewrite - A redirect to a main site

11:14 pm, February 25, 2016 719 605 3.0 @ 200 wpmrate up KruXoR source
1

Original Post Date: 5:06 am, July 16, 2014

Thought this might be useful

This does tend to break ajax / jquery call backs. Can be quite useful if you need to chage quickly and are still waiting for the dns to update.

People who during their shared hosting life used to configure everything using only Apache’s .htaccess files, usually translate the following rules:

RewriteCond %{HTTP_HOST} example.org
RewriteRule (.*) http://www.example.org$1

to something like this:

server { listen 80; server_name www.example.org example.org; if ($http_host = example.org) { rewrite (.*) http://www.example.org$1; } ...
}

 

This is a wrong, cumbersome, and ineffective way. The right way is to define a separate server for example.org:

server { listen 80; server_name example.org; return 301 http://www.example.org$request_uri;
}
server { listen 80; server_name www.example.org; ...
}

 

On versions prior to 0.9.1, redirects can be made with:
 rewrite ^ http://www.example.org$request_uri?;

 

Another example. Instead of the “upside-down” logic “all that is not example.com and is not www.example.com”:

RewriteCond %{HTTP_HOST} !example.com
RewriteCond %{HTTP_HOST} !www.example.com
RewriteRule (.*) http://www.example.com$1

one should simply define example.com, www.example.com, and “everything else”:

server { listen 80; server_name example.com www.example.com; ...
}
server { listen 80 default_server; server_name _; return 301 http://example.com$request_uri;
}

 

On versions prior to 0.9.1, redirects can be made with:
 rewrite ^ http://example.com$request_uri?;

 

Converting Mongrel rules

Typical Mongrel rules:

DocumentRoot /var/www/myapp.com/current/public
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ %{DOCUMENT_ROOT}/system/maintenance.html [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1 [QSA,L]
RewriteCond %{REQUEST_FILENAME}/index.html -f
RewriteRule ^(.*)$ $1/index.html [QSA,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1/index.html [QSA,L]
RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

should be converted to

location / { root /var/www/myapp.com/current/public; try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel;
}
location @mongrel { proxy_pass http://mongrel;
}
nginx.org
11:14 pm, February 25, 2016 719 605 source

Comments

Reports

Add Report

Report's

KruXoR

This is a site where i basically just post whatever i feel like at the time, it has no one particular topic but usually. Just my ideas and links and random bits of code that i find.

Follow Me..

@KruXoR

Minecraft

Looking for the kruxor minecraft server mc.kruxor.com? we have migrated it to... icekraft.com if you want to play on there just connect to play.icekraft.com:25535 or mc.kruxor.com should also still work.

Favorite Links