使用Nginx和Puma Rails提供静态文件服务

4

我正在尝试使用Unix sockets配置Nginx + Rails + Puma,但是我无法提供我的资产。 我有以下配置,如果有人能指出缺少什么,我将不胜感激。 我的Nginx配置如下:

upstream my_app {
  server unix:///var/run/my_app.sock;
}

server {
  listen 8080;
  server_name _; 
  root /var/www/plantmonitorweb/public; # app location

  location / {
    proxy_pass http://my_app;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  # this one is from Rails guides
  location ~ ^/assets/ {
    expires 1y;
    add_header Cache-Control public;

    add_header ETag "";
  }
}

在 production.rb 中

  config.public_file_server.enabled = false
  config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' 

puma.rb没有改变。我正在使用以下命令运行puma服务器:

puma -e production -b unix:///var/run/my_app.sock

我在远程机器上运行这些代码(具体来说是在Raspberry Pi上),Puma运行得很好,似乎nginx也连接到了我的服务器,但当我打开Chrome浏览器控制台时,看到以下信息。
 GET http://192.168.1.35:8080/pack/app.js

我检查了public/pack目录下的文件,它确实存在。
我的Nginx配置文件位于/etc/nginx/conf.d/,该目录在Nginx.conf中被包含(include /etc/nginx/conf.d/*.conf)。
1个回答

3
在rails 5中,react js文件位于public/pack/下。因此,我们需要将这些位置作为静态文件和assets文件夹进行服务。因此,我在我的nginx配置中添加了以下位置。
 location ~ ^/(assets|packs)/ {
    gzip_static on;
    expires 1y;

    add_header Cache-Control public;
    add_header Last-Modified "";
    add_header ETag "";
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接