Как обслуживать RoR JS / CSS из nginx пассажира sub_uri? - PullRequest
1 голос
/ 11 сентября 2010

Вот мой конфиг:

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;
        }
    }

}

и я работаю на последней версии nginx, ruby ​​на рельсах 2.3.5 и последней версии пассажира.Проблема, с которой я столкнулся, заключается в том, что я хочу выполнить развертывание в sub_uri, поэтому я изменяю конфигурацию сервера, чтобы она имела:

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

, но когда я посещаю страницу, все css, которые ссылаются на / images / etc/ etc / выходят с 404, потому что приложение rails находится в sub uri.На моем общем хосте с Apache я могу без проблем развернуть приложение rails в подкаталогах в public_html и без конфигурации для моего приложения rails и с помощью файлов css, указывающих на / images ... и он просто смотрит на rails public /папка images.

Вопрос: есть ли настройка, которую мне не хватает в Rails или в Nginx?Или мне нужно найти все / images / reference и / css / и / js / и вручную добавить / smart_ads_archive / js .. и т. Д.

Спасибо за помощь!

1 Ответ

1 голос
/ 11 сентября 2010

Пожалуйста, прочитайте документацию для , как использовать Sub URI в Nginx / Passenger .

Короткая версия: вам нужна символическая ссылка в вашем корне на папку Rails / public /.Passenger_base_uri принимает имя этой символической ссылки в качестве параметра.

...