I'm porting a site from Apache/mod_perl to nginx/FastCGI, and am having some configuration problems whilst closely following the instructions in the Cat docs and wiki (specifically, Catalyst::Manual::Deployment::nginx::FastCGI and http://wiki.catalystframework.org/wiki/adventcalendararticles/2008/02-catalyst_and_nginx ). There are already some updates to the docs I can make based on what I've learned, and I'll incorporate anything I learn here as well.
I run several sites on the same server at non-root locations. Within my main server { } block, I add (for example): # SF citations site location /sf { include fastcgi_params; # stock Ubuntu file; overload as necessary fastcgi_param SCRIPT_NAME /sf/; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_pass unix:/tmp/sf.socket; } location /sf/static { root /usr/local/www/modules/CatSF/root; } The static location thing was taken from the Advent article. However, it's not working; this config is trying to serve the files from /usr/local/www/modules/CatSF/root/sf , i.e. inserting "sf" at the end. What's the correct approach? For comparison, the Apache config I use for this app is: PerlSwitches -I/usr/local/www/modules/CatSF/lib PerlModule CatSF <Location /sf> SetHandler modperl PerlResponseHandler CatSF </Location> Alias /sf/static /usr/local/www/modules/CatSF/root/static <Directory /usr/local/www/modules/CatSF/root/static> allow from all </Directory> <Location /sf/static> SetHandler default-handler </Location> My second question is about the use of SSL. Most of my apps have password logins that are wrapped with C::P::RequireSSL. In Apache, this Just Worked; I didn't do anything, and https requests were handled properly. In nginx, my SSL configuration is conflicting with this and I'm not sure how to resolve it. When I hit the main page without having logged in, it redirects to the https version of the page, and I get a 404 with this error: 2011/11/06 02:19:02 [error] 23266#0: *62 open() "/usr/local/www/data/incomings" failed (2: No such file or directory), client: [blah], server: localhost, request: "GET /incomings HTTP/1.1", host: "[blahblah]" In other words, it's treating the request as a not-Catalyst request, as this is the root of the server { } block that handles https: # HTTPS server server { listen 443; server_name localhost; root /usr/local/www/data; index index.html index.htm; [...] How do I configure nginx to handle ssl requests for Cat apps through Cat? And is there some neat way of handling the configuration, so that I don't have to put it in two places (the regular server on 80 and the https server on 443)? Thanks. _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/