Ниже приведена моя конфигурация балансировки нагрузки. Другие мои серверы содержат настройку приложения на основе единорога nginx. Когда я попробовал конфигурацию выше, изображения не загружаются. У меня всего три сервера: 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)$ { }
}
Проблема, если вы хотите обслуживать их через прокси-серверы, заключается в том, что блок местоположения регулярного выражения имеет более высокий приоритет в поиске местоположения nginx при совпадении URI. Итак, удалите последний блок местоположения или напишите одно уникальное резервное местоположение и используйте 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;
}
Я исправил это сам, проблема в том, что я должен добавить URL-адрес баланса нагрузки в application.rb, а также в seeeion_store.rb, ошибочно я добавил localhost, поэтому он не может получить изображения, теперь он исправлен.