Rails Passenger Glyphicon CORS Cloudfront NGINX问题

所以我知道stackoverflow是关于CORS Nginx,Cloudfront和Heroku的这些问题,但由于某种原因,我无法让它工作。 我一直在关注这个问题的答案:

如何使用rails,nginx和passenger配置`Access-Control-Allow-Origin`?

但是,我似乎无法弄清楚自定义代码块的放置位置:

config/nginx.conf.erb 

接下来,通过查找如下所示的块来编辑配置文件config / nginx.conf.erb:

 location @static_asset { gzip_static on; expires max; add_header Cache-Control public; add_header ETag ""; } ...and add the two Access-Control lines: 

 > location @static_asset { > gzip_static on; > expires max; > add_header Cache-Control public; > add_header ETag ""; > add_header Access-Control-Allow-Origin *; > add_header Access-Control-Request-Method *; > } That's it. This will work in production, but not in development, due to config.assets differences between the two. 

在我的Nginx配置中。 我正在使用Phusion Passenger 5.0.23。 Nginx配置在我从乘客那里取出的那个中没有位置@static_asset块。 它确实有一个自定义配置部分,但这对我没用。 我的glyphicons继续显示为盒子如何让它工作? 我也试过这个Phusion Passenger + Heroku + Cloudfront:CORS配置

当前配置文件

  ########################################################################## # Passenger Standalone is built on the same technology that powers # Passenger for Nginx, so any configuration option supported by Passenger # for Nginx can be applied to Passenger Standalone as well. You can do # this by direct editing the Nginx configuration template that is used by # Passenger Standalone. # # This file is the original template. DO NOT EDIT THIS FILE DIRECTLY. # Instead, make a copy of this file and pass the `--nginx-config-template` # parameter to Passenger Standalone. # # Learn more about using the Nginx configuration template at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template # # *** NOTE *** # If you customize the template file, make sure you keep an eye on the # original template file and merge any changes. New Phusion Passenger # features may require changes to the template file. ##############################################################  worker_processes 1; events { worker_connections 1024; } http {  ### BEGIN your own configuration options ### # This is a good place to put your own config # options. Note that your options must not # conflict with the ones Passenger already sets. # Learn more at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template ### END your own configuration options ### default_type application/octet-stream; types_hash_max_size 2048; server_names_hash_bucket_size 64; client_max_body_size 1024m; access_log off; keepalive_timeout 60; underscores_in_headers on; gzip on; gzip_comp_level 3; gzip_min_length 150; gzip_proxied any; gzip_types text/plain text/css text/json text/javascript application/javascript application/x-javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/xml font/opentype image/svg+xml text/xml;  # Default server entry for mass deployment mode. server {  }   server {   ### BEGIN your own configuration options ### # This is a good place to put your own config # options. Note that your options must not # conflict with the ones Passenger already sets. # Learn more at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template # CloudFront fix location /public/* { gzip_static on; expires max; add_header Cache-Control public; add_header ETag ""; add_header Access-Control-Allow-Origin *; add_header Access-Control-Request-Method *; } ### END your own configuration options ### } passenger_pre_start ;  } 

我有同样的问题,这个配置对我有用:

  ########################################################################## # Passenger Standalone is built on the same technology that powers # Passenger for Nginx, so any configuration option supported by Passenger # for Nginx can be applied to Passenger Standalone as well. You can do # this by direct editing the Nginx configuration template that is used by # Passenger Standalone. # # This file is the original template. DO NOT EDIT THIS FILE DIRECTLY. # Instead, make a copy of this file and pass the `--nginx-config-template` # parameter to Passenger Standalone. # # Learn more about using the Nginx configuration template at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template # # *** NOTE *** # If you customize the template file, make sure you keep an eye on the # original template file and merge any changes. New Phusion Passenger # features may require changes to the template file. ############################################################## <%= include_passenger_internal_template('global.erb') %> worker_processes 1; events { worker_connections 4096; } http { <%= include_passenger_internal_template('http.erb', 4) %> ### BEGIN your own configuration options ### # This is a good place to put your own config # options. Note that your options must not # conflict with the ones Passenger already sets. # Learn more at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template ### END your own configuration options ### default_type application/octet-stream; types_hash_max_size 2048; server_names_hash_bucket_size 64; client_max_body_size 1024m; access_log off; keepalive_timeout 60; underscores_in_headers on; gzip on; gzip_comp_level 3; gzip_min_length 150; gzip_proxied any; gzip_types text/plain text/css text/json text/javascript application/javascript application/x-javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/xml font/opentype image/svg+xml text/xml; <% if @app_finder.multi_mode? %> # Default server entry for mass deployment mode. server { <%= include_passenger_internal_template('mass_deployment_default_server.erb', 12) %> } <% end %> <% for app in @apps %> server { <%= include_passenger_internal_template('server.erb', 8, true, binding) %> <%# <%= include_passenger_internal_template('rails_asset_pipeline.erb', 8, false) %1> %> ### BEGIN your own configuration options ### # This is a good place to put your own config # options. Note that your options must not # conflict with the ones Passenger already sets. # Learn more at: # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template # Rails asset pipeline support. location ~ "^/assets/.+-([0-9a-f]{32}|[0-9a-f]{64})\..+" { error_page 490 = @static_asset; error_page 491 = @dynamic_request; recursive_error_pages on; if (-f $request_filename) { return 490; } if (!-f $request_filename) { return 491; } } location @static_asset { gzip_static on; expires max; add_header Cache-Control public; add_header ETag ""; if ($http_origin ~* ((https?:\/\/[^\/]*\.herokuapp\.com(:[0-9]+)?))) { add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, HEAD'; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With'; } } location @dynamic_request { passenger_enabled on; } ### END your own configuration options ### } passenger_pre_start <%= listen_url(app) %>; <% end %> <%= include_passenger_internal_template('footer.erb', 4) %> }