Mercurial > hg > nginx-site
view xml/en/docs/http/converting_rewrite_rules.xml @ 2769:16f6fa718be2
Updated TLSv1.3 support notes.
Previous notes described some early development snapshot of OpenSSL 1.1.1
with disabled TLSv1.3 by default. It was then enabled in the first alpha.
Further, the updated text covers later major releases such as OpenSSL 3.0.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 30 Sep 2021 16:29:20 +0300 |
parents | cb7fbecee8e6 |
children |
line wrap: on
line source
<!-- Copyright (C) Igor Sysoev Copyright (C) Nginx, Inc. --> <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> <article name="Converting rewrite rules" link="/en/docs/http/converting_rewrite_rules.html" lang="en" rev="2"> <section name="A redirect to a main site"> <para> People who during their shared hosting life used to configure <i>everything</i> using <i>only</i> Apache’s .htaccess files, usually translate the following rules: <programlisting> RewriteCond %{HTTP_HOST} example.org RewriteRule (.*) http://www.example.org$1 </programlisting> to something like this: <programlisting> server { listen 80; server_name www.example.org example.org; if ($http_host = example.org) { rewrite (.*) http://www.example.org$1; } ... } </programlisting> </para> <para> This is a wrong, cumbersome, and ineffective way. The right way is to define a separate server for <literal>example.org</literal>: <programlisting> server { listen 80; server_name example.org; return 301 http://www.example.org$request_uri; } server { listen 80; server_name www.example.org; ... } </programlisting> <note> On versions prior to 0.9.1, redirects can be made with: <programlisting> rewrite ^ http://www.example.org$request_uri?; </programlisting> </note> </para> </section> <section> <para> Another example. Instead of the “upside-down” logic “all that is not <literal>example.com</literal> and is not <literal>www.example.com</literal>”: <programlisting> RewriteCond %{HTTP_HOST} !example.com RewriteCond %{HTTP_HOST} !www.example.com RewriteRule (.*) http://www.example.com$1 </programlisting> one should simply define <literal>example.com</literal>, <literal>www.example.com</literal>, and “everything else”: <programlisting> server { listen 80; server_name example.com www.example.com; ... } server { listen 80 default_server; server_name _; return 301 http://example.com$request_uri; } </programlisting> <note> On versions prior to 0.9.1, redirects can be made with: <programlisting> rewrite ^ http://example.com$request_uri?; </programlisting> </note> </para> </section> <section id="converting_mongrel_rules" name="Converting Mongrel rules"> <para> Typical Mongrel rules: <programlisting> 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.html [QSA,L] RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L] </programlisting> should be converted to <programlisting> 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; } </programlisting> </para> </section> </article>