Fork me on GitHub

Примеры настройка Nginx прокси

NGINX - 301 Редирект Moved Permanently

301 Moved Permanently, редирект, говорящий что ресурс перемещен на постоянной основе. В интернетах пишут что мол типа архинеобходимо для SEO, мол поисковики это дюже уважают), спорить не буду, не вникал. В веб сервере Nginx 301 редирект настраивается в конфигурационном файле ( в apache можно через файл .htaccess ), таким образом:

1 вариант

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server {
     listen  80;
     server_name  www.dtulyakov.ru;
     rewrite ^ http://dtulyakov.ru$request_uri? permanent; #301 redirect
}

server {
     listen  80;
     server_name dtulyakov;

  .....
  основной конфиг
  .....
}

2 вариант

1
2
3
4
5
6
server {
    server_name dtulyakov.ru;

    if ( $host = 'www.dtulyakov.ru' ) {
        rewrite  ^/(.*)$  http://dtulyakov.ru/$1  permanent;
}
Балансировщик

проксирование простой вариант

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
upstream j_server {
  server 10.0.3.100:8080 fail_timeout=0;
}

server {
    listen 80;
    server_name jenkins.dtulyakov.ru;
    reset_timedout_connection   on;
    charset UTF-8;
    location / {
        proxy_pass http://j_server;
        proxy_next_upstream error timeout invalid_header http_500 http_503;
        #proxy_set_header Host $host;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_connect_timeout 30;
    }
}

проксирование вариант с балансировкой

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
upstream j_server {
  server 10.0.3.100:8080 weight=10;
  server 10.0.3.101:8080 max_fails=3 fail_timeout=30s;
  server 10.0.3.102:8080 max_fails=2;
  server 10.0.3.103:8080 backup fail_timeout=0;
}

  .....
  основной конфиг
  .....

проксирование вариант с балансировкой

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
upstream j_server {
  least_conn;
  server 10.0.3.100:8080 weight=10;
  server 10.0.3.101:8080 max_fails=3 fail_timeout=30s;
  server 10.0.3.102:8080 max_fails=2;
  server 10.0.3.103:8080 backup fail_timeout=0;
}

  .....
  основной конфиг
  .....

проксирование вариант с балансировкой Hash и IP hash Для каждого запроса Nginx вычисляет хэш, который состоит из текста, переменных веб-сервера или их комбинации, а затем сопоставляет его с бэкендами Для вычисления хэша используется схема (http или https) и полный URL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
upstream j_server {
  hash $scheme$request_uri;
  server 10.0.3.100:8080 weight=10;
  server 10.0.3.101:8080 max_fails=3 fail_timeout=30s;
  server 10.0.3.102:8080 max_fails=2;
  server 10.0.3.103:8080 backup fail_timeout=0;
}

  .....
  основной конфиг
  .....

IP hash работает только с HTTP, это предопределенный вариант, в котором хэш вычисляется по IP-адресу клиента Если адрес клиента IPv4, то для хэша используется первые три октета, если IPv6, то весь адрес

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
upstream j_server {
  ip_hash;
  server 10.0.3.100:8080 weight=10;
  server 10.0.3.101:8080 max_fails=3 fail_timeout=30s;
  server 10.0.3.102:8080 max_fails=2;
  server 10.0.3.103:8080 backup fail_timeout=0;
}

  .....
  основной конфиг
  .....
  • max_fails - задает количество неудачных попыток подключений, после которых бэкенд определенное время считается недоступным
  • fail_timeout - время, в течение которого сервер считается недоступным
  • round-robin - Веб-сервер по умолчанию распределяет запросы равномерно между бэкендами (но с учетом весов). Этот стандартный метод в Nginx, так что директива включения отсутствует
  • least_conn - Запросы сначала отправляются бэкенду с наименьшим количеством активных подключений (но с учетом весов) Если количество активных соединений одинаково, то дополнительно используется метод round-robin
  • max_fails - задает количество неудачных попыток подключений, после которых бэкенд определенное время считается недоступным
  • fail_timeout - время, в течение которого сервер считается недоступным
Ссылки

Comments