nginx 配置用于安全资产服务

nginx 配置用于安全资产服务

我有一个包含静态内容的 Web 应用,可以提供动态页面和安全内容。静态内容位于/public文件夹中,应由 直接提供nginx。动态内容由上游提供127.0.0.1:3000。安全内容也由上游提供,可从/assets/*URL 获得。此安全内容可能具有与静态内容相同的文件扩展名,但它始终位于 中/assets/

我有一个工作nginx配置,其中两个位置具有相同的代理规则。有没有办法以某种方式减少我的配置,以连接上游服务的两个位置?

server {
  server_name  example.name;
  root /home/user/ruby18/app/public;
  try_files $uri @thin;
  location ^~ /assets/ {
    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;
    proxy_pass http://thin;
  }
  location ~* \.(jpeg|jpg|gif|png|ico|css|bmp|js)$ {
    root /home/user/ruby18/app/public;
  }
  location @thin {
    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;
    proxy_pass http://thin;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root html;
  }
}

upstream thin {
  server 127.0.0.1:3000;
}

答案1

include指令就是您正在寻找的。

/etc/nginx/proxy.conf

    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;
    proxy_pass http://thin;

/etc/nginx/nginx.conf

server {
    server_name  example.name;
    root /home/user/ruby18/app/public;
    try_files $uri @thin;
    location ^~ /assets/ {
        include proxy.conf;
    }
    location @thin {
        include proxy.conf;
    }
    ... 

相关内容