Nginx + railsy + subdomeny + rewirite

Mam tak skonfigurowany nginx:

[code]worker_processes 1;

events {
worker_connections 4096;
}

http {
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] $request ’
'"$status" $body_bytes_sent “$http_referer” ’
‘"$http_user_agent" “$http_x_forwarded_for”’;

access_log /var/log/nginx.access.log main;

sendfile on;

keepalive_timeout 65;

upstream thin_cluster {
server 127.0.0.0:3000;
}

server {
  listen 3001;
  server_name sklep.local;
	access_log /Users/MacBury/Sites/Rails/cart-on-rails/log/labs.local.access.log;
  error_log /Users/MacBury/Sites/Rails/cart-on-rails/log/labs.local.error.log;
	
  charset utf-8;
	
	location / {
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;

  if (-f $request_filename/index.html) {
    rewrite (.*) $1/index.html break;
  }
  if (-f $request_filename.html) {
    rewrite (.*) $1.html break;
  }
  if (!-f $request_filename) {
    proxy_pass http://127.0.0.0:3000;
    break;
  }
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
  root   html;
}
}

}[/code]
Pliki statyczne są serwowane poprawne ale już jak chcę uzyskać dostęp do mojej aplikacji railsowej dostaję 403 Forbidden. Chcę też uzyskać przypisywanie adresów w podobny sposób
jakas_nazwa.sklep.local > sklep.local/cache/jakas_nazwa

Próbowałem już parę kombinacji i mi nie wychodzi. Z góry wielkie dzięki za pomoc

Włącz taila na /Users/MacBury/Sites/Rails/cart-on-rails/log/labs.local.error.log i tam znajdziesz wskazówkę dlaczego 403.

2010/05/27 22:44:23 [error] 1584#0: *28 directory index of “/Users/MacBury/Sites/Rails/cart-on-rails/public/” is forbidden, client: 127.0.0.1, server: sklep.local, request: “GET / HTTP/1.1”, host: “sklep.local”

Zatem wydaje mi się, że masz złe uprawnienia katalogu public. Możesz spróbować dodać dyrektywę “user ;” (gdzie to nazwa właściciela katalogu aplikacji) pod dyrektywą “worker_processes”.

hmm teraz dostaję error [emerg]: bind() to 0.0.0.0:3004 failed (48: Address already in use). Zmiana portu w configu pomaga do następnego restartu. Potem wywala ten sam błąd dla nowego portu

ok problem z portem rozwiązany(nginx po wykonaniu komendy nginx -s stop nie killował procesów). Teraz wie ktoś jak zrobić to przepisywanie z domeny na folder? Udało mi się wyskrobać coś takiego:

[code] set $subdomain “”;

		if ($host ~* "^([A-Za-z0-9-]+)\.sklep\.local$") {
	    set $subdomain $1;
	    root /Users/MacBury/Sites/Rails/cart-on-rails/public/store_assets/$subdomain;
	  }[/code]

ale to nie działa. Ma ktoś jakiś pomysł?

uff… Zrobione. Jak ktoś chce to podrzucam tutaj kodzik:

if ($host ~* ^([A-Za-z0-9-]+)\.shop\.local$) { set $subdomain $1; rewrite ^(.*)$ /store_assets/$subdomain/$1 break; }