2010-09-11 3 views
1

Voici ma config:Comment servir RoR JS/CSS sur nginx passagers sub_uri?

user nobody nobody; 
worker_processes 2; 

error_log /rails/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15; 
    passenger_ruby /usr/local/bin/ruby; 
    include  mime.types; 
    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" -- "$cookie_YBY" '; 
    access_log /rails/nginx_access.log main; 
    sendfile  on; 
    tcp_nopush  on; 
    keepalive_timeout 65; 
    client_header_timeout  10m; 
    client_body_timeout   10m; 
    send_timeout    10m; 
    connection_pool_size  256; 
    client_header_buffer_size 1k; 
    # large headers needed for FF 
    large_client_header_buffers 4 8k; 
    request_pool_size   4k; 

    gzip on; 
    gzip_http_version 1.0; 
    gzip_comp_level 2; 
    gzip_min_length 1100; 
    gzip_buffers 4 8k; 
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

    output_buffers 1 32k; 
    postpone_output 1460; 
    server { 
     listen 80; 
     server_name optisol.s0hoo.com; 
     client_max_body_size 50M; 
     #access_log /rails/access.log; 
     error_log /rails/smart_error.log; 
     root /rails/smart_ads_archive/public; 
     passenger_enabled on; 
     location ~* \.(ico|css|js|gif|jp?g|png)(\?[0-9]+)?$ { 
      expires max; 
      access_log off; 
      break; 
     } 
    } 

} 

et im en cours d'exécution sur le dernier nginx, rubis sur des rails 2.3.5, et le dernier passager. Le problème que j'ai est que je veux déployer un sub_uri, donc je modifier la configuration du serveur pour avoir:

root /websites/rails; 
passenger_base_uri /smart_ads_archive; # <--- been added. 

mais quand je visite la page tous les css que les liens vers/images/etc/etc/viennent avec 404 parce que l'application rails est assis dans le sous-uri. Sur mon hôte partagé avec Apache je suis capable de déployer l'application rails vers les sous-répertoires dans public_html sans problème et sans configuration à l'application mes rails et avec les fichiers css pointant vers/images ... et ça regarde juste les rails public/dossier d'images.

La question: y a-t-il un paramètre qui me manque dans Rails ou dans Nginx? Ou dois-je aller chercher toutes les/images/références et/css/et/js/et préfixer manuellement/smart_ads_archive/js .. etc

Merci pour l'aide!

Répondre

1

Veuillez lire la documentation pour how to use a Sub URI in Nginx/Passenger. Version courte: vous avez besoin d'un lien symbolique à la racine du dossier Rails/public /. Passenger_base_uri prend le nom de ce lien symbolique comme paramètre.

+0

Bonjour Patrick. J'ai suivi les instructions là-bas. J'ai un lien symbolique dans mon répertoire racine pointant vers le dossier public de mon application rails. Le problème que j'ai, et peut-être que je n'étais pas assez clair, est que les fichiers css et les fichiers js qui se réfèrent au chemin "/images/file.png" essayent de frapper le tld/images/file.png et non le tld/sub_uri/images/file.png. Les répertoires générés par les rails semblent obtenir le sub_uri, c'est la mention explicite des ressources qui ne sont pas trouvées. – Mike

Questions connexes