trying to get alias and seo urls working with uwsgi but no luck

Igor Sysoev igor at sysoev.ru
Fri Feb 11 13:15:35 MSK 2011


On Fri, Feb 11, 2011 at 04:54:18AM -0500, chenxee wrote:
> hi there,
> 
> I'm new to nginx and trying to configure nginx and uwsgi to get
> alias+seo url working, something like this:
> 
> http://domain.com/shop/product/123 - /shop is an alias and shop dir
> doesnt exist in filesystem under doc root, and this url trying to pass
> query string as ?product=123
> 
> to get alias working, my config:
> 
> [code]
> location /shop {  
>   alias     /public/webshop;    
>   index main.py;     
> }
> 
> location ~ ^/shop.+\.py$ {
>   root /public/webshop;  
>   rewrite /shop/(.*\.py?)$ /$1 break;
>   include    uwsgi_params;  
>   uwsgi_pass unix:$uwsgi_socket;    
> }
> [/code]
> 
> It's working fine, as http://domain.com/shop/ finds
> "/public/webshop/main.py" and pass to uwsgi socket. However
> http://domain.com/shop/product/123 always report 404 not found - nginx
> tries to locate "/public/webshop/product/123" and ofc it's not there..
> whereas http://homer.unisport.dk/shop/?product=123 works fine as usual.
> 
> What I'm trying is to forward all request starting with /shop to
> /public/webshop/main.py and let python script parses url. I have tried
> googled a lot nginx rewrite rules, e.g. [code]
> rewrite ^/shop/(.*)$ /$1 permanent;
> [/code]
> but with no luck. Maybe I'm so bad at understand nginx rewrite,
> therefore looking for any advice here.
> 
> Any thoughts would be appreciated.

You need to make copy of uwsgi_params, say, uwsgi.conf,
Then remove this line from the new file:
    uwsgi_param  PATH_INFO          $document_uri;

and use this configuraiton:

location /shop {
   uwsgi_pass unix:/path/to/uwsgi/socket;
   include      uwsgi.conf;
   uwsgi_param  PATH_INFO    /public/webshop/main.py;
}

Alos, you should not
   set $uwsgi_socket /path/to/uwsgi/socket;


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



More information about the nginx mailing list