У меня 3 сервера. Первый сервер имеет nginx как балансировку нагрузки. Второй и третий серверы имеют apache. В моем nginx conf у меня есть следующее:
upstream backend {
server ec2-54-148-248-231.us-west-2.compute.amazonaws.com;
server ec2-54-148-34-166.us-west-2.compute.amazonaws.com;
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
proxy_pass http://backend;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
Проблема в том, что когда я открываю первый сервер, он перенаправляет меня ко второму или третьему, но я не могу загрузить какие-либо относительные URL-адреса (например: css или js файлы) внутри моего сайта, и все ссылки возвращают ошибку 404.
вы можете попробовать мой сервер балансировки нагрузки на линии url => http://ec2-54-148-96-241.us-west-2.compute.amazonaws.com/
Я обнаружил, что nginx с балансировкой нагрузки с круговым или минимальным подключением, каждый последующий запрос клиентов может быть потенциально распространен на другой сервер. поэтому на моем сайте после первого запроса на ex => http://ec2-54-148-96-241.us-west-2.compute.amazonaws.com/site/index, тогда сделайте запрос http://ec2- 54-148-96-241.us-west-2.compute.amazonaws.com/assets/f352c4d6/css/bootstrap.css он переходит на другой сервер, но для активов f352c4d6 не найден на другом сервере, поэтому возвратите 404.
Решение: вы должны использовать ip_hash; с балансировкой нагрузки nginx, чтобы поддерживать один и тот же сервер для одного ip, также вы можете использовать leas_connect для распределения трафика пользователя по меньшей мере.