powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Поговорим про nginx?
55 сообщений из 55, показаны все 3 страниц
Поговорим про nginx?
    #39464339
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот прочитал комментарий, типамимопроходилтреднечиталэто всё потому, что у апаче убогие конфиги и документация, поэтому и нжинкс набирает обороты: документация людская, конфиги людскиепро апача ничего не скажу, а вот с nginx-ом возникают многие недопонимания (ну таки пришлось и его подкручивать) Например, из наступленных граблей (за неделю знакомства):
    Проксирование SSL траффика (причем используется TRANSPARENT-прокси) на Tomcat -- новый хром (и все, что на его движке построено) -- если идет расшифровка на nginx и на Tomcat пробрасывается на HTTP точку доступа -- ошибка (там приложение такое, что кроме 401, 403 ничего и не видно, причем если 401 еще нормально, юзер не успел авторизоваться, то 403 не знаю на каком основании отдается). Похоже из-за того, что отключили SPDY , других оснований не вижу, более старые версии работают Проксирование SSL траффика (уже не расшифровыванного, на HTTPS) при настройке KEEPALIVE в UPSTREAM -- приложение (иногда!!!) получает какой-то левый клиентский адрес (а в приложении проверка на него) ERROR_PAGE, будучи объявленным на уровне SERVER, через IF корректно отрабатывает только на уровне LOCATION, если IF будет внутри SERVER -- отдается нативная страница ошибка
В принципе, вот конфиги -- если кто покритикует, буду признателенnginx.conf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.

user                    root;
worker_processes        auto;

error_log               /var/log/nginx/error.log warn;
#error_log              /var/log/nginx/error.log debug;
pid                     /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include             mime.types;
    default_type        application/octet-stream;

    server_tokens       off;
    ignore_invalid_headers      on;
    open_log_file_cache max=1000;

    log_format          main
                        '$remote_addr [$time_iso8601] ($host) "$request" '
                        '$status $body_bytes_sent bytes ($request_time secs) '
                        '"$http_referer" "$http_user_agent" "$upstream_addr"';

    log_format          error_access_format
                        '$remote_addr [$time_iso8601] "$request" '
                        '$status "$http_referer" '
                        '"$http_user_agent" "$request_uri" ($error_access)';

    log_format          deny_log_format
                        '$remote_addr 1;';

    access_log          /var/log/nginx/access.log main;

    ssl_ciphers                 "-ALL:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA";
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;
    ssl_session_timeout         10m;


    client_max_body_size        0;
    client_body_buffer_size     128m;

    proxy_send_timeout  150;
    proxy_read_timeout  150;

    proxy_buffer_size   4k;
    proxy_buffers       8192 4k;
    proxy_busy_buffers_size 4m;

    proxy_cache_bypass  $http_cache_control;
    proxy_no_cache      $http_cache_control;

    proxy_http_version  1.1;
#    proxy_set_header   Connection "";
    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

    keepalive_timeout   120 100;
    keepalive_requests  100;
    reset_timedout_connection on;

    sendfile            on;
    tcp_nodelay         on;
    tcp_nopush          on;

    gzip                on;
    gzip_disable        "msie6";
    gzip_types          text/plain text/csstext/xml text/javascript application/x-javascript application/xml;
    gzip_proxied        expired no-cache no-store private auth;

    include             checks/*.conf;
    include             conf.d/*.conf;
}

stream  {
    open_log_file_cache max=1000;

    log_format          stream
                        '$remote_addr [$time_iso8601] '
                        '$protocol $status $bytes_sent sent $bytes_received recv '
                        '($session_time secs) "$upstream_addr" ';

    include             stream/*.conf;
}
conf.d/morpheus.conf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
upstream morpheus_http  {
    ip_hash;
    server 192.168.213.13:8080;
#    keepalive  4;
}

upstream morpheus_https {
    ip_hash;
    server 192.168.213.13:443;
#    keepalive  4;
}

map     $host:$request_uri $bad_request {
    default                                     0;
    "~*^195\.x\.x\.x:/app3/.*"       0;
    "~*^195\.x\.x\.x:.*"                  1;
}

server  {
    listen              80;
    server_name         morpheus.xxx.ru 195.xxx.xxx.xxx;

    rewrite             ^  https://$host$request_uri  permanent;
}

limit_conn_zone         $binary_remote_addr zone=limit_conn_morpheus:5m;
limit_req_zone          $binary_remote_addr zone=limit_req_morpheus:10m rate=20r/s;

proxy_cache_path        /var/cache/nginx/morpheus levels=1:2 use_temp_path=off keys_zone=morpheus_cache:20m max_size=256m;

server  {
    listen              443 ssl;
    server_name         morpheus.xxx.ru 195.xxx.xxx.xxx;

    include             err_page/*.conf;
    include             checks/log_bad_access;

    limit_conn          limit_conn_morpheus 50;
    limit_req           zone=limit_req_morpheus burst=80;
    limit_conn_log_level error;
    limit_req_log_level  warn;

    access_log          /var/log/nginx/morpheus_access.log main;
    error_log           /var/log/nginx/morpheus_error.log warn;

    ssl_certificate     ssl/morpheus-cert.pem;
    ssl_certificate_key ssl/morpheus-key.pem;
    ssl_dhparam         ssl/dh2048.pem;

    ssl_session_cache   shared:SSL_morpheus:2m;

    proxy_bind          $remote_addr transparent;

    proxy_cache         morpheus_cache;

    location ^~ /app2/        {
        include         checks/ret_bad_access;
        proxy_pass       https://morpheus_https; 
    }

    location /  {
        if ($bad_request)       {
            return      403;
        }
        include         checks/ret_bad_access;
        proxy_pass       http://morpheus_http; 
    }
}
err_page/error_page.conf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
error_page      502 504 /errors/temp_unavail.html;

error_page      403 /errors/forbidden.html;

location ~ ^/errors/([^/]*\.html)$      {
    alias       err_page/$1;
    allow all;
    internal;
}
checks/check.conf (сперто с http://www.gofuckbiz.com/showthread.php?t=39716 )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
include checks/*.map;

map $bad_ip             $bad_ip_str     {
    "1"                 "Bad IP";
}
map $bad_ua             $bad_ua_str     {
    "1"                 "Bad User Agent";
}
map $bad_location       $bad_location_str       {
    "1"                 "Bad Location";
}
map $bad_referer        $bad_referer_str        {
    "1"                 "Bad Referer";
}
map "$bad_ip:$bad_ua:$bad_location:$bad_referer"        $error_access   {
    "~^1"               $bad_ip_str;
    "~^.:1"             $bad_ua_str;
    "~^.:.:1"           $bad_location_str;
    "~^.:.:.:1"         $bad_referer_str;
}
map $bad_ip:$error_access       $add_bad_ip     {
    default             "1";
    "0:"                "0";
#    "~^1:"             "0";
}
checks/log_bad_access
Код: plaintext
1.
2.
access_log      /var/log/nginx/access_error.log error_access_format if=$error_access;
access_log      checks/bad_ip.list deny_log_format if=$add_bad_ip;
checks/ret_bad_access (пришлось отделить от предыдущего, чтоб встраивать отдельно в LOCATION, иначе отдается нативная страница ошибки)
Код: plaintext
1.
2.
3.
if ($error_access)      {
    return      403;
}
stream/9094.conf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
upstream morpheus_xxx      {
    hash $remote_addr consistent;
    server  192.168.213.13:9094;
}

limit_conn_zone $binary_remote_addr zone=limit_conn_stream_9094:10m;

server      {
    listen          9094;

    limit_conn      limit_conn_stream_9094 20;
    limit_conn_log_level error;

    access_log      /var/log/nginx/stream_9094_access.log stream;
    error_log       /var/log/nginx/stream_9094_error.log warn;

    proxy_bind      $remote_addr transparent;

    proxy_pass      morpheus_xxx;
}
PS. Для Tomcat <Valve className="org.apache.catalina.valves.RemoteIpValve" настроен PPS. TRANSPARENT-прокси выбран именно для того, чтоб по TCP протоколу получать адрес клиента в логе. В принципе, для HTTP/HTTPS пробовался и не транспарентный (чисто через заголовки) -- рояли не играет -- первые две проблемы стреляют PPPS. И самое обидное, что это проявляется только под нагрузкой
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464761
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nginx хорошая вещь, но выставлять томкат через апач и mod_jk как-то сподручнее и обкатаннее.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464777
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это вы, ребята, разбираетесь
Для меня была команда -- балансировщик нагрузки (планируется несколько UPSTREAM серверов) + возможная (именно возможная, потому как все понимают, что без "пылесоса" от провайдера -- это пшик) от DDoS
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464887
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровДля меня была команда -- балансировщик нагрузки (планируется несколько UPSTREAM серверов)в качестве балансировщина именно можно и haproxy рассмотреть
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464927
У nginx есть отличный список рассылки, на русском, в котором отвечают гораздо более понимающие люди
http://mailman.nginx.org/mailman/listinfo/nginx-ru
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464940
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровВот прочитал комментарий, типамимопроходилтреднечиталэто всё потому, что у апаче убогие конфиги и документация, поэтому и нжинкс набирает обороты: документация людская, конфиги людскиепро апача ничего не скажу, а вот с nginx-ом возникают многие недопонимания

"нормальные" sticky sessions (или session persistence) есть только в nginx plus, который за бабки, а в том же httpd оно из коробки, так что выбор бесплатного nginx в качестве reverse proxy довольно сомнителен.

Scott Tigernginx хорошая вещь, но выставлять томкат через апач и mod_jk как-то сподручнее и обкатаннее.
вроде как mod_proxy_ajp попроще будет, а возможности те же самые, да и вообще ajp вебсокеты не поддерживает, что огорчает.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464942
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов"нормальные" sticky sessions (или session persistence) есть только в nginx plus, который за бабки, а в том же httpd оно из коробки, так что выбор бесплатного nginx в качестве reverse proxy довольно сомнителен.ip_hash для обеспечения sticky sessions в преобладающем числе случеав вполне достаточно , и платная версия не требуется для этого
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464945
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83ip_hash для обеспечения sticky sessions в преобладающем числе случеав вполне достаточно , и платная версия не требуется для этогоособенно в восторге от этой достаточности удаленные сотрудники, ходящие через vpn
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39464971
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловbga83ip_hash для обеспечения sticky sessions в преобладающем числе случеав вполне достаточно , и платная версия не требуется для этогоособенно в восторге от этой достаточности удаленные сотрудники, ходящие через vpnа в чем проблема с доступом через VPN?
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465091
неТолик1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровPPPS. И самое обидное, что это проявляется только под нагрузкой

Возможно проблема чуть ниже уровня http

Приведите вывод
Код: coco
1.
sysctl -a | grep net.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465099
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весь?
Или только измененные параметры?
И с какой машинки, с nginx-ом или с Tomcat-ом?
Вот недефолтовые на nginx-е
Код: plaintext
1.
2.
3.
4.
5.
[root@nginx-1 ~]# egrep -v '^(#|$)' /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_forward = 1
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465100
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов"нормальные" sticky sessions (или session persistence) есть только в nginx plus, который за бабки, а в том же httpd оно из коробки, так что выбор бесплатного nginx в качестве reverse proxy довольно сомнителен.Пока UPSTREAM-сервер только один, так что это неактуально
Да и как уже сказали, ip_hash вполне нормальный вариант

Андрей ПанфиловScott Tigernginx хорошая вещь, но выставлять томкат через апач и mod_jk как-то сподручнее и обкатаннее.
вроде как mod_proxy_ajp попроще будет, а возможности те же самые, да и вообще ajp вебсокеты не поддерживает, что огорчает.Странно, что в большинстве своем в интернетах упоминается, что именно апач прячется за nginx

И еще немаловажная вещь -- для чистого TCP траффика необходимо определять IP-адрес клиента за reverse proxy. Тут заголовками, как в HTTP, не отделаешься
Nginx умеет биндить сокеты от имени клиентских адресов на своей машинке и с них уже связываться с UPSTREAM. Т.е. для Tomcat в этом случае nginx полностью прозрачен (TRANSPARENT reverse proxy). Умеет ли такое Apache "из коробки" -- не знаю

Ну и в планах конторский Web-сервер на Apache надо будет спрятать все за тот же nginx
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465101
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понимаю в этом делеУ nginx есть отличный список рассылки, на русском, в котором отвечают гораздо более понимающие люди
http://mailman.nginx.org/mailman/listinfo/nginx-ru Да, спасибо
Надо будет попробовать пообщаться
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465109
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровСтранно, что в большинстве своем в интернетах упоминается, что именно апач прячется за nginx
...
Ну и в планах конторский Web-сервер на Apache надо будет спрятать все за тот же nginxИ как всё это мешает разместить котяру за индейцем прямщас???
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465112
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83а в чем проблема с доступом через VPN?В том что это самый тривиальный случай, когда у клиента за время сессии меняется ip-адрес, а есть еще пользаки, сидящие одновременно и по wifi и по проводу, а еще бывают случаи когда нужно переконфигурировать количество бэкендов - и во всех этих случаях использование ip_hash приводит к тому, что пользаков перекидывает на другой бэкенд, да, можно заморочиться с репликацией сессий или общим сторажем, но зачем? только ради того чтобы использовать nginx?
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465116
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВячеслав ЛюбомудровСтранно, что в большинстве своем в интернетах упоминается, что именно апач прячется за nginx
...
Ну и в планах конторский Web-сервер на Apache надо будет спрятать все за тот же nginxИ как всё это мешает разместить котяру за индейцем прямщас???Не очень понятно, зачем
Ну и опять же вопрос с определением адреса клиента в чистом TCP траффике
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465117
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловbga83а в чем проблема с доступом через VPN?В том что это самый тривиальный случай, когда у клиента за время сессии меняется ip-адрес, а есть еще пользаки, сидящие одновременно и по wifi и по проводу, а еще бывают случаи когда нужно переконфигурировать количество бэкендов - и во всех этих случаях использование ip_hash приводит к тому, что пользаков перекидывает на другой бэкенд, да, можно заморочиться с репликацией сессий или общим сторажем, но зачем? только ради того чтобы использовать nginx?Странный какой-то VPN, меняющий адрес клиенту в течении сессии и таки надеюсь, это не каждую минуту происходит?

Ну и переконфигурация бэкендов тоже вещи не частая, тем более указав выбывшему DOWN (а не просто удалив его из конфигурации) вроде как перераспределятся сессии только данного узла, а на всех остальных останутся на месте
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465118
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровСтранный какой-то VPN, меняющий адрес клиенту в течении сессии и таки надеюсь, это не каждую минуту происходит?Сессия - она http, а vpn у пользователя - пользователь постоянно держат подключение не обязан: отключился, подключился обратно - адрес уже другой.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465122
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну так пожалуйста, переподключился -- переавторизовался в приложении Tomcat-а
Там работа с деньгами, поэтому авторизация все равно необходима

И вообще, вопрос не столько в том, стоит или не стоит юзать nginx (хотя, конечно, мнения послушать интересно).

Тут больше вопрос, сталкивался ли кто-нибудь с озвученными проблемами. А то мож это я накосячил с настройками
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465124
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровНу и опять же вопрос с определением адреса клиента в чистом TCP траффикеКаким боком в API сервлет-контейнера появляется "адрес клиента в чистом TCP траффике"?
Результат вызова getRemoteAddr не зависит от использования кошерного реверс-прокси.

P.S. С моей кочки зрения нет ничего проще, чем использование связки mod_proxy , mod_proxy_ajp и mod_proxy_balancer .
Можно и mod_jk - он один за троих справляется.
Уж всяко проще, чем объяснять nginx-у, какие заголовки ему надо дописать, чтобы всё работало.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465136
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКаким боком в API сервлет-контейнера появляется "адрес клиента в чистом TCP траффике"?
Результат вызова getRemoteAddr
в линуксах есть возможность создавать сокеты с опцией IP_TRANSPARENT:
ip(7) Setting this boolean option enables transparent proxying on
this socket. This socket option allows the calling
application to bind to a nonlocal IP address and operate both
as a client and a server with the foreign address as the local
endpoint. NOTE: this requires that routing be set up in a way
that packets going to the foreign address are routed through
the TProxy box (i.e., the system hosting the application that
employs the IP_TRANSPARENT socket option). Enabling this
socket option requires superuser privileges (the CAP_NET_ADMIN
capability).
,используя divert-сокеты можно пакеты из iptables поднимать в userspace,
ну а если на бэкендах как default gw указать reverse-proxy, то можно ответы эт бэкенда разбирать и отправлять обратно клиенту.

Собственно сама конфигурация выглядит довольно замороченной (reverse-proxy от рута работает, шлет в сеть "кривые" пакеты, да еще и на бэкендах роутинг кривой), так что:
Basil A. SidorovС моей кочки зрения нет ничего проще, чем использование связки mod_proxy, mod_proxy_ajp и mod_proxy_balancer.
Можно и mod_jk - он один за троих справляется.
Уж всяко проще, чем объяснять nginx-у, какие заголовки ему надо дописать, чтобы всё работало
выглядит более чем разумно (в документации точно также рекомендуют оставаться на уровне http если это возможно, а если не повезло, то отлаживаться при помощи tcpdump )
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465183
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловСобственно сама конфигурация выглядит довольно замороченной (reverse-proxy от рута работает, шлет в сеть "кривые" пакеты, да еще и на бэкендах роутинг кривой), так что:
Basil A. SidorovС моей кочки зрения нет ничего проще, чем использование связки mod_proxy, mod_proxy_ajp и mod_proxy_balancer.
Можно и mod_jk - он один за троих справляется.
Уж всяко проще, чем объяснять nginx-у, какие заголовки ему надо дописать, чтобы всё работало
выглядит более чем разумно (в документации точно также рекомендуют оставаться на уровне http если это возможно, а если не повезло, то отлаживаться при помощи tcpdump )Еще раз -- в чистом TCP траффике нет никаких заголовков (типа Host:, X-Forwarded-For: и т.п.) это не HTTP
Адрес определяется только по адресу IP пакета

Поэтому да, биндится сокет на адрес клиента, а на стороне томката настраивается правило, что для всех пакетов пришедших с определенного интерфейса, дефолтовым шлюзом является NGINX через этот же интерфейс

С iproute2 все решается просто и элегантно: rule add, route add
Со стороны NGINX через iptables пакеты маркируются и обрабатываются именно NGINX-ом
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465332
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЕще раз -- в чистом TCP траффике нет никаких заголовковА, б-муха, не знал.

P.S. Как уже задолбали любители извратов на ровном месте ...
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465397
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
P.S. С моей кочки зрения нет ничего проще, чем использование связки
Уж всяко проще, чем объяснять nginx-у, какие заголовки ему надо дописать, чтобы всё работало.

Так попробуйте включать в nginx debug log. Или даже директиву debug_connection, если действие происходит на живых нагруженных серверах.
Обычно снимаются все вопросы и не нужно писать ни в какие списки рассылки.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465400
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВячеслав ЛюбомудровЕще раз -- в чистом TCP траффике нет никаких заголовковА, б-муха, не знал.

P.S. Как уже задолбали любители извратов на ровном месте ...Можешь предложить вариант без извратов?
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465586
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЕще раз -- в чистом TCP траффике нет никаких заголовков (типа Host:, X-Forwarded-For: и т.п.) это не HTTP


А в каком месте у вас не HTTP трафик-то?

Вячеслав Любомудров...
listen 80;
...
listen 443 ssl;
...
PS. Для Tomcat <Valve className="org.apache.catalina.valves.RemoteIpValve" настроен
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465644
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конфигурация ниже, для стримов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
upstream morpheus_xxx      {
    hash $remote_addr consistent;
    server  192.168.213.13:9094;
}

limit_conn_zone $binary_remote_addr zone=limit_conn_stream_9094:10m;

server      {
    listen          9094;
...
    proxy_bind      $remote_addr transparent;

    proxy_pass      morpheus_xxx;
Собственно, именно из-за него возникло требование использовать TRANSPARENT -- обязательно нужно знать IP-адрес клиента. Возможно есть другой вариант, но я его, к сожалению, не знаю

Ну и "чтоб два раза не вставать" так же сделано по остальным приложениям (для HTTPS). Тут еще небольшой ньюанс -- производитель приложения явным образом не поддерживает правки server.xml (в частности, добавления org.apache.catalina.valves.RemoteIpValve) и восстанавливает его из своих ранее сгенеренных шаблонов перед каждым запуском. Можно прописать его в этих шаблонах, но при любой модификации через управлялку или апгрейда приложения они перегенерятся и придется прописывать по-полной. Ничего сложного, но можно и забыть. С TRANSPARENT-proxy такой проблемы вовсе нет

И как я уже говорил, озвученные проблемы стреляют что через обычный, что через TRANSPARENT прокси.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465651
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

тогда все равно смысл использования nginx в борьбе за ip-адрес клиента не ясен:
от клиента http-трафик и не http-трафик может идти по разным путям, поэтому ожидание что на входе у вас будут одинаковые source ip несколько неправильное

сам nginx в случае не-HTTP трафика у вас никакой полезной функции не выполняет (ну вот в случае HTTP можно получить профиты в виде кеширования, офлоада SSL и пр., а у вас он даже не балансирует) - можно же просто обычным NAT обойтись если так уж нужен source ip
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465675
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловВячеслав Любомудров,

тогда все равно смысл использования nginx в борьбе за ip-адрес клиента не ясен:
от клиента http-трафик и не http-трафик может идти по разным путям, поэтому ожидание что на входе у вас будут одинаковые source ip несколько неправильное
Не очень понятно про мои ожидания и смесь HTTP и не HTTP траффика
Андрей Панфиловсам nginx в случае не-HTTP трафика у вас никакой полезной функции не выполняет (ну вот в случае HTTP можно получить профиты в виде кеширования, офлоада SSL и пр., а у вас он даже не балансирует) - можно же просто обычным NAT обойтись если так уж нужен source ip
Именно для балансировки (пока в UPSTREAM указан один сервер, но это не значит, что он всегда будет один)

Андрей, вот честно, Вы используете/использовали nginx?
Теорию я ведь и сам неплохо знаю
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465706
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровАндрей, вот честно, Вы используете/использовали nginx?
Теорию я ведь и сам неплохо знаюИспользовали, ровно до тех пор как они начали его монетизировать, сейчас, если смотреть на бесплатные альтернативы, то последние выглядят гораздо лучше на фоне бесплатного nginx: у httpd куда больше удобств при работе с http-трафиком, а тот же HAProxy из коробки умеет то же самое, да еще и нормальную статистику для мониторинга предоставляет, а не куцую страницу с семью цифрами.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465732
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, будем посмотреть
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465807
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и если посмотреть, то в HAProxy ip transparency с 2006 года существует, а в nginx ее добавили только в августе 2016 - возможно оно не набрало еще популярности в nginx чтобы баги править. У вас кстати настройки sysctl отличаются от рекомендуемых nginx в плане включения rp_filter:
nginxMissing Packets

If packets are unexpectedly dropped (tcpdump shows that they are sent by one machine but not received by another), reverse path filtering is a potential silent culprit. To disable reverse path filtering temporarily, run the following command:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f ; done

+ HAProxy еще вот это рекомендует:
haproxynet.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.conf.default.rp_filter = 2 #0 preferred
net.ipv4.conf.default.accept_source_route = 1
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465816
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно
Смотрю пока по HAProxy, примерно то же самое, со своими минусами (нет кэширования и буферизации) и плюсами (возможность кластеризации). Собственно, он рассматривался в дальнейшем как балансировщик двух nginx-ов
Но, оказывается он умеет и как transparent reverse proxy, так что наверное, есть смысл с ним попробовать (хрен с ним, с кэшированием, но буферизации, в терминах nginx, жалко)
Тем более что да, статистика там не в пример богаче

По поводу RP_FILTER -- там один интерфейс, какой reverse path

Вот про net.ipv4.ip_nonlocal_bind мне непонятно, root и так может биндить нелокальные адреса, а HAProxy, насколько понимаю, работает только от рута.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465829
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровПо поводу RP_FILTER -- там один интерфейс, какой reverse pathвообще два (петлю никто не отменял) и вместо выключения rp_filter можно включить логирование марсианских пакетов (log_martians)
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39465936
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
Посмотрел по статистикам netstat -s / nstat -asz, ReversePathFilter по нулям, отрубать пока не стал (я в отпуске и что-то ломать сейчас нежелательно)
Логирование "марсиан" включил, но скорее всего это тоже пустой номер

PS. Вот только к озвученным в первом посте вопросам это не имеет отношения
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39466129
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровКонфигурация ниже, для стримов9094 кто слушает? Тоже котяра или отдельная прикладуха?

P.S. Отвыкайте править server.xml - читайте документацию на вашу версию .
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39466311
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВячеслав ЛюбомудровКонфигурация ниже, для стримов9094 кто слушает? Тоже котяра или отдельная прикладуха?Tomcat
Приложение закрытое
Basil A. SidorovP.S. Отвыкайте править server.xml - читайте документацию на вашу версию .Это относилось только к org.apache.catalina.valves.RemoteIpValve , т.е. к HTTP(S). Это рекомендация поставщика приложения
В случае TRANSPARENT reverse proxy (а его все-равно приходится использовать) это не нужно вовсе.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39466974
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я умываю руки ...
Разработчик, что - открывает сокеты прямо в собственном приложении или, всё-таки, использует сконфигурированные коннекторы?
За каким вообще лешим, вам приспичило делать странное, полностью игнорируя документированную штатную возможность?
Если вы не можете (уж не знаю почему) использовать AJP-коннекторы - возьмите индейца, mod_proxy, mod_proxy_balancer, mod_proxy_http.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39467060
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЯ умываю руки ...Чище будут
Basil A. SidorovРазработчик, что - открывает сокеты прямо в собственном приложении или, всё-таки, использует сконфигурированные коннекторы?Естественно, описан коннектор <ля-ля-ля port=9094 protocol=...ibtp..> (не очень хочется светить разработчика). Общается клиентское Java standalone приложение (или сервлет) с сервером, со своим шифрованием и т.д.
Но то, что там не ходят HTTP заголовки -- однозначно
Basil A. SidorovЗа каким вообще лешим, вам приспичило делать странное, полностью игнорируя документированную штатную возможность?Что здесь странного: использование NGINX в принципе или возможность его работы как TRANSPARENT reverse proxy?
Дык использование NGINX широко освещается (и рекомендуется) в "этих ваших интернетах" как пример быстрого и легкого в том числе балансировщика, в отличии от "более ресурсоемкого и неповоротливого" апача? И именно NGINX ставится впререди апача, а не наоборот. И по статистике (врут, конечно) число таких конфигураций весьма велико
TRANSPARENT можно не обсуждать, с этим проблем пока нет
Basil A. SidorovЕсли вы не можете (уж не знаю почему) использовать AJP-коннекторыНаверное, потому, что разработчик решил использовать свой протоколBasil A. Sidorovвозьмите индейца, mod_proxy, mod_proxy_balancer, mod_proxy_http.Скажем так, "сварщик я ненастоящий", поэтому глубоко возможностей апача я не знаю
Но, опять же в терминах "легкий/ресурсоемкий" NGINX выигрывает
Вот подсказали альтернативу -- HAProxy, но вроде как с функциональностью NGINX-а разница небольшая.

Я вообще просто спросил, сталкивался ли кто-нибудь с подобными граблями при работе с NGINX-ом
Нет, так нет
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39467182
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровДык использование NGINX широко освещается (и рекомендуется) в "этих ваших интернетах" как пример быстрого и легкого в том числе балансировщика, в отличии от "более ресурсоемкого и неповоротливого" апача? И именно NGINX ставится впререди апача, а не наоборот. И по статистике (врут, конечно) число таких конфигураций весьма велико
А еще в наших интернетах популярна шутка про ошибку 504 Вот насколько я помню, nginx начал набирать популярность в наших интернетах где-то в году 2005-2006 (до этого Сысоев баловался mod_accel) и причины ставить nginx впереди httpd были следующие: сервера были не настолько быстрые как сейчас и концепция httpd, заключающаяся в монопольном обслуживании клиентских запросов одним процессом (т.е. или 1.3 или mpm prefork в основном использовались, а более легкий mpm worker толи не особо стабильным был, толи не все модули его поддерживали нормально), выглядела довольно уныло, особенно когда использовался keepalive и/или раздавались большие файлы ( X-Accel-Redirect вообще рулил и педалил) - интернеты-то тоже небыстрые были. Сейчас же и памяти в сервер можно натыкать сколько угодно, интернеты быстрые, mpm worker (или лучше mpm event) работает достойно, да и файлы принято при помощи CDN раздавать - сейчас я вот не вижу причин выставлять nginx впереди httpd, если тот же httpd используется по каким-то конкретным причинам.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468493
Фотография Adekamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

апач очень тяжелый.... один коннект один процесс - это очень дорого, есть правда мльтитрединговый апач - но не взлетел
nginx ставят перед томкатом по разным причинам, даже если есть доп балансировшик какой то - все равно ставят nginx, отрезает ВСЮ статику у джавы
сдн тоже не вариант - надо отдельно отслеживать корректность выдачи, что нигде не отвалилось
на практике приводит к тому что отдельным скриптом отслеживают корректность загрузки статики у клиента и переключение на локальную выдачу при наличии ошибок
сдн скорее помогает трафик сильно экономить....
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468518
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров И именно NGINX ставится впререди апача, а не наоборот. И по статистике (врут, конечно) число таких конфигураций весьма велико

И не врут.
Это стандартный современный хостинговый шаблон, из суровой Cибири (родины ispmanager). Потом во все панели перекочевало. По дизайну панелей можно судить о массовом вебмастере и веб-студиях.
К тому же, хронологически nginx начал распространение тогда, когда php просто глючил в thread safe режиме и его в принципе нельзя было эксплуатировать. (apache то может и работал изначально)
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468804
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adekamerесть правда мльтитрединговый апач - но не взлетелДавайте писать правильно, а? не взлетело оно для пыхпы, а все кому нужно вполне работают через event mpm и проблем не знают:
http://php.net/manual/en/faq.installation.php#faq.installation.apache2 Why shouldn't I use Apache2 with a threaded MPM in a production environment?
PHP is glue. It is the glue used to build cool web applications by sticking dozens of 3rd-party libraries together and making it all appear as one coherent entity through an intuitive and easy to learn language interface. The flexibility and power of PHP relies on the stability and robustness of the underlying platform. It needs a working OS, a working web server and working 3rd-party libraries to glue together. When any of these stop working PHP needs ways to identify the problems and fix them quickly. When you make the underlying framework more complex by not having completely separate execution threads, completely separate memory segments and a strong sandbox for each request to play in, further weaknesses are introduced into PHP's system.

If you want to use a threaded MPM, look at a FastCGI configuration where PHP is running in its own memory space.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468878
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-во, я worker еще с 2.0 пользовал и проблем не знал. PHP не держу ни в каком виде и никому не советую.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468897
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловСейчас же и памяти в сервер можно натыкать сколько угодно,
ага, только и пользователей интернета стало пропорционально больше. И у каждого вкладки.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468899
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

а вкладки-то на что влияют вообще?
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468924
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, изменились рефлексы браузинга - люди не боятся запутаться и просто открывают сразу по 5 вкладок и потом читают. Ну это конечно опытные пользователи.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468930
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

а раньше они окна боялись запускать? я вот как помню, по рефлексу везде с зажатым шифтом тыкался
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468937
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, я не утверждал, что это принципиальный момент. Это в дополнение.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468946
Фотография Adekamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83а в чем проблема с доступом через VPN?
ip_hash работает по первым трем октетам адреса
так что если пользователи внутри локалки и из одной подсети класса С..... они получают на выходе не сессионность а роундробин
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468956
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

ну тут надо смотреть что в какую сторону перевешивает: с вашей стороны количество пользователей, с моей - память, потоки, CDN, mpm event, можно еще всякие REST приплести. Если смотреть с организационной стороны, то и httpd и HAProxy уже есть в дистрибутиве, а значит обновления безопасности мне будут сами по себе прилетать, а для nginx придется попотеть, да и установка nginx - это еще +1 сервис, за которым следить нужно, так что память воткнуть дешевле, благо не 2000 год на дворе.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468978
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем участвующим

Так что, теперь использование NGINX перед Tomcat уже не является извращением?

Или таки смотреть в сторону HAProxy?
Хотя, как я уже говорил, в планах (возможно, до этого не дойдет) использовать HAProxy как балансировщик между NGINX-ами. Или, зачем городить огород и обойтись только HAProxy?

Сейчас, вторую неделю, полет нормальный (хоть я и в отпуске, но иногда мониторю). Ни "марсиан", ни ReversePathFilter в статистике не замечено.

Но, повторюсь:
-- проблема номер раз, для новых (современных) хромов и что на его движке (Opera, например) расшифрованный HTTPS-траффик на HTTP-точку доступа определенного приложения не воспринимает (я могу привести ошибки, но они не о чем не говорят, просто после серии ответов 401, 200, 200 эти приложения получают 403, а не 200. 401 в начале, насколько я понял, это штатная фишка, что клиент еще не авторизовался). Возможно, я неправильно настроил коннектор в Tomcat (secure=true указано). С IE, FireFox, Safary таких проблем нет. Как (временное) решение -- для конкретно этого приложения (их несколько на одном коннекторе Tomcat-а) траффик отправляется как HTTPS (вот уж не знаю, перешифровывается он или нет) на другой (HTTPS) коннектор. Это двойная работа, на мой взгляд, и хотелось бы ее избежать.

-- При настройке KEEPALIVE-соединений на бэкэнде совершенно случайным образом при большом количестве одновременных соединений передаются какие-то левые (предварительно соединявшиеся) адреса клиентов. Отключение KEEPALIVE в UPSTREAM помогло и похоже на баг.

-- про 3 вопрос, ну я думал, что NGINX достаточно популярен и найдутся люди которые просто ткут носом, гдя я что-то путаю

Повторюсь -- нет, так нет
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39468998
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловто и httpd и HAProxy уже есть в дистрибутиве, а значит обновления безопасности мне будут сами по себе прилетать, а для nginx придется попотеть,
Вы еще один одепт redhat?
Ну фу же.
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39469019
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adekamerтак что если пользователи внутри локалки и из одной подсети класса С..... они получают на выходе не сессионность а роундробинс чего это вдруг раунд-робин? хэш по тем первым октетам будет всегда одним и тем же(при условии сохранения доступности всех бекэндов) и прокидывать пользователя будет на один и тот же сервер
...
Рейтинг: 0 / 0
Поговорим про nginx?
    #39469159
Фотография Adekamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83,

да, перепутал
в обшем балансировки не будет


можно форк tengine поставить.....
там сессионность на куках есть
а вообще для нормальных проектов есть нормальные коммерческие решения - типа big ip-f5 ltm
мне в свое время удалось с ним поработать достаточно плотно - офигительная весчь! это keepalived + nginx+ и еше куча плюшек!
и все равно на бекендах джинкс отрезать статику чтоб ява только логикой занималась и никакой статики не отдавала
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Поговорим про nginx?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]