Примеры настройка Nginx прокси
NGINX - 301 Редирект Moved Permanently
301 Moved Permanently, редирект, говорящий что ресурс перемещен на постоянной основе. В интернетах пишут что мол типа архинеобходимо для SEO, мол поисковики это дюже уважают), спорить не буду, не вникал. В веб сервере Nginx 301 редирект настраивается в конфигурационном файле ( в apache можно через файл .htaccess ), таким образом:
1 вариант
server {
listen 80;
listen [::]:80;
server_name www.dtulyakov.ru;
location / { return 301 http://dtulyakov.ru$request_uri; }
}
server {
listen 80;
listen [::]:80;
server_name dtulyakov.ru;
}
2 вариант - как нельзя делать
server {
server_name dtulyakov.ru;
if ( $host = 'www.dtulyakov.ru' ) {
rewrite ^/(.*)$ http://dtulyakov.ru/$1 permanent;
}
Балансировщик
проксирование простой вариант
upstream j_server {
server 10.0.3.100:8080 fail_timeout=0;
}
server {
listen 80;
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;
}
}
проксирование вариант с балансировкой
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;
}
проксирование вариант с балансировкой
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
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, то весь адрес
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-robinmax_fails
- задает количество неудачных попыток подключений, после которых бэкенд определенное время считается недоступнымfail_timeout
- время, в течение которого сервер считается недоступным