Обратный прокси-сервер nginx + статические файлы

Средняя загрузка вычисляется в ядре - см. Почему при вычислении нагрузки Linux не используется прямая скользящая средняя за 1/5/15 минут? для подробностей. Таким образом, вы не можете просто получить показания с более высоким разрешением. Вместо этого вы могли бы написать код пользовательского пространства, который дублирует функциональность, но это кажется немного сложным (не в последнюю очередь потому, что для того, чтобы сделать это правильно, вам придется много сэмплировать, что кажется глупыми накладными расходами на перегруженный сервер).

Вместо этого я бы посоветовал выбрать что-то другое, кроме средней нагрузки, в качестве основы для вашего решения - возможно, что-то, что вы знаете из самой службы. Например, как насчет отката, если время отклика превышает средний порог?

0
16.04.2019, 11:50
2 ответа

Почти готово. Решение состоит в том, чтобы сначала попробовать статический файл и перейти к обратному прокси-серверу (wordpress )в качестве запасного варианта:

server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    listen       [::]:80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root /static-pages;

    location / {
        try_files $uri $uri/ /static-pages/ @proxy;
    }

    location @proxy {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        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_set_header X-Forwarded-Proto $scheme;
    }
}

Ссылка:

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#proxy-everything

НО! Когда я пытаюсь получить доступ к /, я получаю 403 отказ в доступе для /static-pages/index.html(, который не существует ). Как я могу сказать НЕ проверять /index.htmlи просто возвращаться к прокси-серверу, если нет каталога, соответствующего запросу?

0
28.01.2020, 02:40

Рабочий раствор:

server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root              /static-pages;
    index             index.html index.php;
    try_files $uri $uri/ @proxy;

    location @proxy {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress$uri;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";

    }

    location = / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";
    }
}

Было бы здорово, если бы я мог сжать 2 одинаковых прокси, но ничего страшного.

1
28.01.2020, 02:40

Теги

Похожие вопросы