Are these rules ok?

Igor Sysoev is at rambler-co.ru
Fri Dec 26 18:12:07 MSK 2008


On Fri, Dec 26, 2008 at 10:33:58PM +0800, Shri @ DevLib.Org wrote:

> Igor,
> 
> Photopost Classifieds, the package that I use for the classifieds needs 
> Pathinfo for sure.
> 
> Wordpress also seems to use PATH_INFO ( wp-includes/classes.php has a 
> function called parse-request ) for its clean URL functions, so I figured I 
> better enable it. $pathinfo is used a fair bit in the code.
> 
> -----------
>                        if ( isset($_SERVER['PATH_INFO']) )
>                                $pathinfo = $_SERVER['PATH_INFO'];
>                        else
>                                $pathinfo = '';
>                        $pathinfo_array = explode('?', $pathinfo);
>                        $pathinfo = str_replace("%", "%25", 
> $pathinfo_array[0]);
> -----------

OK, then I will plan to simplify PATH_INFO extraction some like this:
        
       fastcgi_path_info   ^(.+\.php)(/.+);

the directive will place 1st capture inside $fastcgi_script_name
and second one inside $fastcgi_path_info.

Other name variants:

       fastcgi_separate_path_info
       fastcgi_split_path_info

What name is better in English ?

> Also, I forgot to add that there was a bit of vBulletin code that behaved 
> strangely. Essentially it was deleting a number of cookies in a tight loop. 
> Obviously this must have been a problem on some platforms as there was this 
> remark in the code.
> 
>                        if (!defined('SKIP_AGGRESSIVE_LOGOUT'))
>                        {
>                                // sending this many headers has caused 
> problems with a few
>                                // servers, especially with IIS. Defining 
> SKIP_AGGRESSIVE_LOGOUT
>                                // reduces the number of cookie headers 
> returned.
> 
> Will have to look at the various options for header buffers etc. For now, 
> defining SKIP_AGGRESSIVE_LOGOUT bypasses the problems.

You may try to increase

      fastcgi_buffer_size   32k;

inside both

      location ~ ^/forum/.+\.php$ {
           fastcgi_buffer_size   32k;
           fastcgi_buffers       4 32k;
           ...
      }

      location @vbulletin {
           fastcgi_buffer_size   32k;
           fastcgi_buffers       4 32k;
           ...
      }

to allow response header up to about 32K.

> Regards,
> Shri
> 
> 
> ----- Original Message ----- 
> From: "Igor Sysoev" <is at rambler-co.ru>
> To: <nginx at sysoev.ru>
> Sent: Friday, December 26, 2008 9:35 PM
> Subject: Re: Are these rules ok?
> 
> 
> >On Fri, Dec 26, 2008 at 09:10:06PM +0800, Shri @ DevLib.Org wrote:
> >
> >>After a bit of playing around. I think I have a config that works. (Not
> >>sure I understand some bits, but it does seem to work across all the
> >>various sections of the site).
> >>
> >>I now have to port over dozens of rewrites I assume the best way to do 
> >>this
> >>is to put them in a seperate file and include them under "location /" 
> >>block?
> >>
> >>E.g: #RewriteRule ^hong-kong/(.*)$ http://www.geoexpat.com/resources/
> >>[R=permanent,L]
> >
> >No, the better include them in separate locations:
> >
> >   location ^~ /hong-kong/ {
> >        rewrite ^/hong-kong/  http://www.geoexpat.com/resources/ 
> >permanent;
> >   }
> >
> >I see PATH_INFO in wordpress and classifieds locations, does this mean
> >that you were not able to run them without PATH_INFO ? (I see that 
> >vbulliten
> >has no PATH_INFO processing).
> >
> >If so, I probably should invent to extract PATH_INFO in easy way.
> >
> >>Once that is done, need to figure out the
> >>
> >>Thanks!
> >>
> >>Shri
> >>
> >>
> >>   server {
> >>
> >>       listen  80;
> >>       server_name geoexpat.com www.geoexpat.com;
> >>
> >>       root /site/expat/oct08;
> >>
> >>       index index.php index.html index.htm;
> >>
> >>       location / {
> >>               try_files      $uri  @wordpress;
> >>       }
> >>
> >>
> >>       location ~ \.php$ {
> >>               try_files      $uri  @wordpress;
> >>
> >>               set $script $uri;
> >>               set $path_info "";
> >>
> >>               if ($uri ~ "^(.+\.php)(/.+)") {
> >>                       set $script $1;
> >>                       set $path_info $2;
> >>               }
> >>
> >>               fastcgi_param  SCRIPT_FILENAME
> >>/site/expat/oct08$fastcgi_script_name;
> >>               fastcgi_pass   unix:/var/tmp/lighttpd/fastcgi-php.sock;
> >>       #       fastcgi_param  PATH_INFO    $path_info;
> >>               include        fastcgi_params;
> >>       }
> >>
> >>       location @wordpress {
> >>               fastcgi_param  SCRIPT_FILENAME 
> >>/site/expat/oct08/index.php;
> >>               fastcgi_pass   unix:/var/tmp/lighttpd/fastcgi-php.sock;
> >>               fastcgi_param  PATH_INFO    $path_info;
> >>               include        fastcgi_params;
> >>       }
> >>
> >>       location ~* \.(jpg|jpeg|gif|css|png|js|ico)$ {
> >>               access_log      off;
> >>               expires         30d;
> >>               break;
> >>       }
> >>
> >>       location /classifieds/ {
> >>               try_files      $uri  @wordpress;
> >>
> >>               set $script $uri;
> >>               set $path_info "";
> >>
> >>               if ($uri ~ "^(.+\.php)(/.+)") {
> >>                       set $script $1;
> >>                       set $path_info $2;
> >>               }
> >>
> >>               fastcgi_param  SCRIPT_FILENAME
> >>/site/expat/oct08$fastcgi_script_name;
> >>               fastcgi_pass   unix:/var/tmp/lighttpd/fastcgi-php.sock;
> >>               fastcgi_param  PATH_INFO    $path_info;
> >>               include        fastcgi_params;
> >>       }
> >>
> >>       location ^~ /scripts/ {
> >>             proxy_pass http://cgiserver;
> >>             proxy_set_header X-Real-IP $remote_addr;
> >>             proxy_set_header Host $host;
> >>             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> >>       }
> >>
> >>       location ^~ /resources/Detailed/ {
> >>             proxy_pass http://cgiserver;
> >>             proxy_set_header X-Real-IP $remote_addr;
> >>             proxy_set_header Host $host;
> >>             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> >>       }
> >>
> >>       location /forum/ {
> >>               rewrite ^/forum/getnew.html$ /forum/search.php?do=getnew
> >>last;
> >>               rewrite ^/forum/getnew([0-9]+).html$
> >>/forum/search.php?do=getnew&f=$1 last;
> >>               rewrite ^/forum/((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$
> >>/forum/vbseo_sitemap/vbseo_getsitemap.php?sitemap=$1 last;
> >>               rewrite ^/forum/unanswered.html$
> >>/forum/search.php?do=process&replyless=1&replylimit=0&dontcache=1 last;
> >>               rewrite ^/forum/unanswered([0-9]+).html$
> >>/forum/search.php?do=process&replyless=1&replylimit=0&dontcache=1&forumchoice=$1&childforums=1
> >>last;
> >>               try_files      $uri  @vbulletin;
> >>       }
> >>
> >>       location ~ ^/forum/.+\.php$ {
> >>               fastcgi_pass   unix:/var/tmp/lighttpd/fastcgi-php.sock;
> >>               fastcgi_param  SCRIPT_FILENAME
> >>/site/expat/oct08/forum/vbseo.php;
> >>               include        fastcgi_params;
> >>       }
> >>
> >>       location @vbulletin {
> >>               fastcgi_pass   unix:/var/tmp/lighttpd/fastcgi-php.sock;
> >>               fastcgi_param  SCRIPT_FILENAME
> >>/site/expat/oct08/forum/vbseo.php;
> >>               include        fastcgi_params;
> >>       }
> >>
> >>       location /jobs/ {
> >>               rewrite ^/jobs/category/(.+)$ /jobs/index.php?cat_name=$1
> >>last;
> >>               rewrite ^/jobs/job/(.+)$
> >>/jobs/index.php?post_permalink=1&post_id=$1  last;
> >>               rewrite ^/jobs/profile/(.+)$ /jobs/index.php?show_emp=$1
> >>last;
> >>               rewrite ^/jobs/page(.+)$ /jobs/index.php?job_page_link=$1
> >>last;
> >>       }
> >>
> >>       location ~ /\.ht {
> >>           deny  all;
> >>       }
> >>   }
> >>
> >>
> >
> >-- 
> >Igor Sysoev
> >http://sysoev.ru/en/
> >
> >
> 

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list