nginx 负载平衡图像未加载

nginx 负载平衡图像未加载

以下是我的负载平衡配置。我的其他服务器包含基于 nginx unicorn 的应用程序设置。当我尝试上述配置时,图像未加载。我总共有三台服务器,1 台用于负载平衡,另外 2 台用于应用程序。有人能帮我吗?我对此感到非常震惊。

upstream backend {
    server ws1.10.10.1.1 fail_timeout=10;
    server ws2.10.10.1.2 fail_timeout=5;
}

server {

    listen 80;
    client_max_body_size 2G;
    server_name staging.xxxx.com;
    include /etc/nginx/mime.types; 
    default_type  application/octet-stream;
    location / {
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X_FORWARDED_PROTO $scheme;
        proxy_set_header  Host $host;
        proxy_connect_timeout 3;
        proxy_read_timeout 60;
        proxy_send_timeout 60;
        proxy_redirect false;
        proxy_max_temp_file_size 0;

        if (!-f $request_filename) {
            proxy_pass http://backend;
        }
    }

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { }
}

答案1

如果您想通过代理服务器提供服务,那么问题是,当 URI 匹配时,正则表达式位置块在 nginx 位置搜索中具有更高的优先级。因此,删除最后一个位置块或编写一个唯一的后备位置并使用try_files

open_file_cache max=10 inactive=10m;
open_file_cache_valid 5m;
open_file_cache_min_uses 1;
open_file_cache_errors on;

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
    # other stuff
    try_files /unreachable/path @fallback;
}

location / {
    # other stuff
    try_files /unreachable/path @fallback;
}

location @fallback {
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X_FORWARDED_PROTO $scheme;
    proxy_set_header  Host $host;
    proxy_connect_timeout 3;
    proxy_read_timeout 60;
    proxy_send_timeout 60;
    proxy_redirect false;
    proxy_max_temp_file_size 0;
    proxy_pass http://backend;
 }

答案2

我自己修复了这个问题,我应该在 application.rb 以及 seeeion_store.rb 中添加负载平衡 url,错误地添加了 localhost,因此无法获取图像,现在它已修复。

相关内容