Передача заголовков клиенту
Добрый день! Подскажите, можно ли указать NGINX'у сразу передавать заголовки клиенту, без ожидания получения полностью всего заголовка? У меня есть upstream-сервер, который после запроса от клиента в некоторых случаях может долго отвечать, больше 5 минут. Поэтому для поддержания соединения upstream отсылает незначащие строки заголовка раз в 10 секунд. Но NGINX копит заголовок, пока не наткнётся на \n\n. Как решить эту проблему? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243691,243691#msg-243691 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Передача заголовков клиенту
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_buffering ? Д. 2013/10/15 Aleus Essentia nginx-fo...@nginx.us Добрый день! Подскажите, можно ли указать NGINX'у сразу передавать заголовки клиенту, без ожидания получения полностью всего заголовка? У меня есть upstream-сервер, который после запроса от клиента в некоторых случаях может долго отвечать, больше 5 минут. Поэтому для поддержания соединения upstream отсылает незначащие строки заголовка раз в 10 секунд. Но NGINX копит заголовок, пока не наткнётся на \n\n. Как решить эту проблему? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243691,243691#msg-243691 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Redirect
rewrite old_url new_url last; - не? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243543,243699#msg-243699 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Redirect
On 14.10.2013 12:47, Cergoo wrote: для меня тема редиректа ещё интересна, если кто может растолковать было бы замечательно, а то я подозреваю, что возможно я просто не знаю как правильно делать редирект без уведомления клиента. никак. redirect всегда происходит с уведомлением клиента подробнее - http://www.ietf.org/rfc/rfc2616.txt, п. 10.3. если вопрос был про rewrite, то надо читать документацию, http://nginx.org/en/docs/http/ngx_http_rewrite_module.html только надо быть осторожным с применением директивы if, потому что в текущей реализации if имеются баги http://wiki.nginx.org/IfIsEvil -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
WebDav на Windows
Здравствуйте. Помогите поднять webdav с помощью nginx на Windows. Скачал nginx/Windows-1.5.6 Согласно инстукций настроил вебдав вот конф #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pidlogs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] $request ' # '$status $body_bytes_sent $http_referer ' # '$http_user_agent $http_x_forwarded_for'; #access_log logs/access.log main; sendfileon; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name webdav; charset utf-8; #access_log logs/host.access.log main; location / { auth_basic Закритий сайт; auth_basic_user_file ./conf/htpasswd; roothtml; client_body_temp_path ./temp/client_body_temp; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:rw; limit_except GET { allow 127.0.0.1; deny all; } #root html; #index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # ##error_page 500 502 503 504 /50x.html; ##location = /50x.html { ##root html; ##} Если удаляю index.htm получаю 403 ошибку. Подключить диск net use * 127.0.0.1:8080 не могу - сетевой ресурс не доступен Что я делаю не так??? или надо перекомпилировать ?? - если да то как сие реализовать в винде? И второй вопрос - как раздавать конкретным пользователям конкретные права на конкретные папки? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243701#msg-243701 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: WebDav на Windows
И такой вопрос - как правильно прописать путь к папке webdav - в винде ето D:\myCloud а никсовский вариант как будет выглядеть? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243702#msg-243702 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: WebDav на Windows
Здравствуйте. На данный момент Nginx поддерживает не все методы необходимые для полноценной работы WebDav. Но есть 3rd party модуль: https://github.com/arut/nginx-dav-ext-module реализующий методы OPTIONS и PROPFIND 15 октября 2013 г., 14:45 пользователь antarey nginx-fo...@nginx.usнаписал: Здравствуйте. Помогите поднять webdav с помощью nginx на Windows. Скачал nginx/Windows-1.5.6 Согласно инстукций настроил вебдав вот конф #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pidlogs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] $request ' # '$status $body_bytes_sent $http_referer ' # '$http_user_agent $http_x_forwarded_for'; #access_log logs/access.log main; sendfileon; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name webdav; charset utf-8; #access_log logs/host.access.log main; location / { auth_basic Закритий сайт; auth_basic_user_file ./conf/htpasswd; roothtml; client_body_temp_path ./temp/client_body_temp; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:rw; limit_except GET { allow 127.0.0.1; deny all; } #root html; #index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # ##error_page 500 502 503 504 /50x.html; ##location = /50x.html { ##root html; ##} Если удаляю index.htm получаю 403 ошибку. Подключить диск net use * 127.0.0.1:8080 не могу - сетевой ресурс не доступен Что я делаю не так??? или надо перекомпилировать ?? - если да то как сие реализовать в винде? И второй вопрос - как раздавать конкретным пользователям конкретные права на конкретные папки? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243701#msg-243701 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Best Regards, Vadim Lazovskiy ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: WebDav на Windows
а как его прикрутить на винде? ./configure --with-http_dav_module --add-module=path-to-this-module Vadim Lazovskiy Wrote: --- Здравствуйте. На данный момент Nginx поддерживает не все методы необходимые для полноценной работы WebDav. Но есть 3rd party модуль: https://github.com/arut/nginx-dav-ext-module реализующий методы OPTIONS и PROPFIND 15 октября 2013 г., 14:45 пользователь antarey nginx-fo...@nginx.usнаписал: Здравствуйте. Помогите поднять webdav с помощью nginx на Windows. Скачал nginx/Windows-1.5.6 Согласно инстукций настроил вебдав вот конф #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pidlogs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] $request ' # '$status $body_bytes_sent $http_referer ' # '$http_user_agent $http_x_forwarded_for'; #access_log logs/access.log main; sendfileon; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name webdav; charset utf-8; #access_log logs/host.access.log main; location / { auth_basic Закритий сайт; auth_basic_user_file ./conf/htpasswd; roothtml; client_body_temp_path ./temp/client_body_temp; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:rw; limit_except GET { allow 127.0.0.1; deny all; } #root html; #index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # ##error_page 500 502 503 504 /50x.html; ##location = /50x.html { ##root html; ##} Если удаляю index.htm получаю 403 ошибку. Подключить диск net use * 127.0.0.1:8080 не могу - сетевой ресурс не доступен Что я делаю не так??? или надо перекомпилировать ?? - если да то как сие реализовать в винде? И второй вопрос - как раздавать конкретным пользователям конкретные права на конкретные папки? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243701#msg-243701 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Best Regards, Vadim Lazovskiy ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243704#msg-243704 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: NGinx + apache проверка работы
denis Wrote: --- У релоада есть большая проблема: он некорректно делает конфигтест, поэтому если есть ошибки в конфиге, reload может сказать что всё ок, а restart говорит о реальных проблемах. И после такого релоада сначала всё работает, но по мере обновления воркеров появляются отказы. --- Очень часто видел такие проблемы у apache. С nginx'ом таких проблем не наблюдалось, хотя для переконфигурации всегда использую именно reload. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243574,243706#msg-243706 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Передача заголовков клиенту
Hello! On Tue, Oct 15, 2013 at 01:59:52AM -0400, Aleus Essentia wrote: Добрый день! Подскажите, можно ли указать NGINX'у сразу передавать заголовки клиенту, без ожидания получения полностью всего заголовка? У меня есть upstream-сервер, который после запроса от клиента в некоторых случаях может долго отвечать, больше 5 минут. Поэтому для поддержания соединения upstream отсылает незначащие строки заголовка раз в 10 секунд. Но NGINX копит заголовок, пока не наткнётся на \n\n. Как решить эту проблему? Никак. Для отправки чего-либо клиенту nginx'у нужны все заголовки ответа - или в какой-то момент могло бы оказаться, что часть заголовков клиенту уже ушла, а в очередном заголовке нас попросили, например, сделать X-Accel-Redirect в другое место. Не говоря уже про то, что чуть менее, чем любой фильтр не сможет даже начать работать с ответом, если не видит всех заголовков. Чтобы подобных сюрпризов и сложностей не возникало - в nginx'е вообще нет возможности работать с отдельными заголовками. Отправляются только все заголовки целиком, никак иначе. Или убирайте nginx, или меняйте логику работы бекенда. -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
allow/deny and return
В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. IMHO стоит написать об этом в документации, момент не очевидный с первого взгляда. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: allow/deny and return
Hello! On Tue, Oct 15, 2013 at 04:26:32PM +0400, Anton Yuzhaninov wrote: В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. IMHO стоит написать об этом в документации, момент не очевидный с первого взгляда. Если ты готов предолжить хороший способ написать об этом - мы с удовольствием. Я, например, хорошего способа не знаю. Потому что не с первого взгляда - момент в общем-то очевидный (у прочитавших документацию на модуль rewrite вопросов, как мне кажется, возникнуть не должно), а как это корректно рассказать не читавшим... -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: allow/deny and return
On Tue, Oct 15, 2013 at 04:45:28PM +0400, Maxim Dounin wrote: Hello! On Tue, Oct 15, 2013 at 04:26:32PM +0400, Anton Yuzhaninov wrote: В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. IMHO стоит написать об этом в документации, момент не очевидный с первого взгляда. Если ты готов предолжить хороший способ написать об этом - мы с удовольствием. Я, например, хорошего способа не знаю. Потому что не с первого взгляда - момент в общем-то очевидный (у прочитавших документацию на модуль rewrite вопросов, как мне кажется, возникнуть не должно), а как это корректно рассказать не читавшим... Пока про это у нас есть такое: http://www.aosabook.org/en/nginx.html Читать со слов Which brings us to the phases. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: allow/deny and return
Hello! On Tue, Oct 15, 2013 at 03:59:53PM +0300, Gena Makhomed wrote: On 15.10.2013 15:45, Maxim Dounin wrote: В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. IMHO стоит написать об этом в документации, момент не очевидный с первого взгляда. Если ты готов предолжить хороший способ написать об этом - мы с удовольствием. Я, например, хорошего способа не знаю. Потому что не с первого взгляда - момент в общем-то очевидный (у прочитавших документацию на модуль rewrite вопросов, как мне кажется, возникнуть не должно), а как это корректно рассказать не читавшим... в документации http://nginx.org/en/docs/http/ngx_http_access_module.html ничего не написано о том, что директивы allow и deny работают не всегда. я прочитал http://nginx.org/en/docs/http/ngx_http_rewrite_module.html но так и не смог понять, почему allow и deny тут не будут работать. Потому что директивы модуля rewrite - это фактически часть выбора конфигурации. И именно от выбранной конфигурации зависит, что можно, а что - нельзя. это все похоже на BUG, потому что пользователи обычно подразумевают, что сначала работает access module и только потом - rewrite_module. по крайней мере, в UNIX и даже в WINDOWS все работает именно так: если доступа к файлу нет, никаких операций с ним сделать нельзя. В Антоном конфиге нет файла. Есть инструкция при выборе конфигурации для обработки запросов вернуть ответ с кодом 200. (И да, я таки считаю, что возможность задавать тело ответа была добавлена в диркетиву return зря, не её это работа. Надо было сделать отдельный модуль a la empty gif, подобных вопросов было бы меньше. Но таки этот фарш уже поздно проворачивать назад.) -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Problem with proxy_pass,
Hi, I am using latest nginx (1.4.3) on centos with next location configuration: location ~^/3g { auth_basic Restricted; auth_basic_user_file htpasswd; rewrite ^/3g/(.*)$ /$1 break; proxy_pass http://127.0.0.1:18001; # proxy_redirect off; proxy_redirect 127.0.0.1:18001/ /3g/; proxy_set_header SCRIPT_NAME /3g; proxy_set_header X-Script-Name /3g; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout600; } 127.0.0.1 - is reverse ssh tunnel to some hardware, with apache on it. if I use location / - all works perfect, but with location /3g opening http://SERVER_IP/3g - I see next in firebug: http://SERVER_IP/cgi-bin/dlDevices.plx?Command=DeviceListDate=Tue So somehow cgi-bin is not redirected to /3g location. Please help. Thank you Yevhen Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243720,243720#msg-243720 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
nginx -t Illegal instruction
Всем привет! собрал nginx для своей системы без проблем (собирал на ней же). Только похоже при запуске nginx -t не может определить тип процессора. К сожалению, система находится на носителе доступном только для чтения. Поэтому отдебажить системные библиотеки не представляется возможным. Надеюсь на помощь. Заранее спасибо. Сергей linux 2.4.28 uClibc i486 == $ nginx -V nginx version: nginx/1.5.6 configure arguments: --prefix=/mnt/C/sys/share/nginx --sbin-path=/mnt/C/sys/sbin/nginx --conf-path=/mnt/C/sys/etc/nginx/nginx.conf --error-log- path=/mnt/C/sys/var/nginx/log/error.log --pid-path=/mnt/C/sys/var/nginx/run/nginx.pid --lock-path=/mnt/C/sys/var/nginx/run/nginx.lock --http-log- path=/mnt/C/sys/var/nginx/log/access.log --http-client-body-temp-path=/mnt/C/sys/var/nginx/tmp/client_body_temp --http-proxy-temp- path=/mnt/C/sys/var/nginx/tmp/proxy_temp --http-fastcgi-temp-path=/mnt/C/sys/var/nginx/tmp/fastcgi_temp --without-http_charset_module --without- http_gzip_module --without-http_ssi_module --without-http_userid_module --without-http_access_module --without-http_auth_basic_module --without- http_autoindex_module --without-http_geo_module --without-http_map_module --without-http_referer_module --without-http_rewrite_module --without- http_proxy_module --without-http_fastcgi_module --without-http_memcached_module --without-http_limit_conn_module --without-http_empty_gif_module --without-http_browser_module --without-http_upstream_ip_hash_module --without-mail_pop3_module --without-mail_imap_module --without- mail_smtp_module --without-pcre --with-debug === CFLAGS=-g -O0 \ ./configure \ --prefix=/mnt/C/sys/share/nginx \ --sbin-path=/mnt/C/sys/sbin/nginx \ --conf-path=/mnt/C/sys/etc/nginx/nginx.conf \ --error-log-path=/mnt/C/sys/var/nginx/log/error.log \ --pid-path=/mnt/C/sys/var/nginx/run/nginx.pid \ --lock-path=/mnt/C/sys/var/nginx/run/nginx.lock \ --http-log-path=/mnt/C/sys/var/nginx/log/access.log \ --http-client-body-temp-path=/mnt/C/sys/var/nginx/tmp/client_body_temp \ --http-proxy-temp-path=/mnt/C/sys/var/nginx/tmp/proxy_temp \ --http-fastcgi-temp-path=/mnt/C/sys/var/nginx/tmp/fastcgi_temp \ --without-http_charset_module \ --without-http_gzip_module \ --without-http_ssi_module \ --without-http_userid_module \ --without-http_access_module \ --without-http_auth_basic_module \ --without-http_autoindex_module \ --without-http_geo_module \ --without-http_map_module \ --without-http_referer_module \ --without-http_rewrite_module \ --without-http_proxy_module \ --without-http_fastcgi_module \ --without-http_memcached_module \ --without-http_limit_conn_module \ --without-http_empty_gif_module \ --without-http_browser_module \ --without-http_upstream_ip_hash_module \ --without-mail_pop3_module \ --without-mail_imap_module \ --without-mail_smtp_module \ --without-pcre \ --with-debug sed -i -e 's/#ifndef NGX_HAVE_GNU_CRYPT_R/#if 0/' src/os/unix/ngx_linux_config.h make === (gdb) run Starting program: /tmp/mnt/C/sys/sbin/nginx Program received signal SIGILL, Illegal instruction. 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 30 src/core/ngx_cpuinfo.c: No such file or directory. in src/core/ngx_cpuinfo.c (gdb) bt #0 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 #1 0x0805dbbb in ngx_cpuinfo () at src/core/ngx_cpuinfo.c:84 #2 0x0806e4f7 in ngx_os_init (log=0x80c27a8) at src/os/unix/ngx_posix_init.c:60 #3 0x08049e21 in main (argc=1, argv=0xbb94) at src/core/nginx.c:312 #4 0x40100b49 in __uClibc_main () from /lib/libc.so.0 (gdb) backtrace full #0 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 No locals. #1 0x0805dbbb in ngx_cpuinfo () at src/core/ngx_cpuinfo.c:84 vendor = (u_char *) 0x806e4d7 \203▒\020▒▒▒\f\b\203=▒▒\f\b vbuf = {0, 0, 0, 0, 0} cpu = {3221224340, 3221223832, 1073744062, 1073762344} model = 3221224588 #2 0x0806e4f7 in ngx_os_init (log=0x80c27a8) at src/os/unix/ngx_posix_init.c:60 n = 0 #3 0x08049e21 in main (argc=1, argv=0xbb94) at src/core/nginx.c:312 i = -1073743152 log = (ngx_log_t *) 0x80c27a8 cycle = (ngx_cycle_t *) 0xbc8c init_cycle = {conf_ctx = 0x0, pool = 0x80cd080, log = 0x80c27a8, new_log = {log_level = 0, file = 0x0, connection = 0, handler = 0, data = 0x0, action = 0x0, next = 0x0}, log_use_stderr = 0, files = 0x0, free_connections = 0x0, free_connection_n = 0, reusable_connections_queue = {prev = 0x0, next = 0x0}, listening = {elts = 0x0, nelts = 0, size = 0, nalloc = 0, pool = 0x0}, paths = {elts = 0x0, nelts = 0, size = 0, nalloc = 0, pool = 0x0}, open_files = { last = 0x0, part = {elts = 0x0, nelts = 0, next = 0x0}, size = 0, nalloc = 0, pool = 0x0}, shared_memory = {last = 0x0, part = {elts = 0x0, nelts = 0, next = 0x0}, size = 0, nalloc = 0, pool = 0x0}, connection_n = 0, files_n = 0, connections = 0x0, read_events = 0x0, write_events = 0x0, old_cycle = 0x0,
Re: nginx -t Illegal instruction
Hello! On Tue, Oct 15, 2013 at 06:14:21PM +0300, Sergey Talchuk wrote: Всем привет! собрал nginx для своей системы без проблем (собирал на ней же). Только похоже при запуске nginx -t не может определить тип процессора. К сожалению, система находится на носителе доступном только для чтения. Поэтому отдебажить системные библиотеки не представляется возможным. Надеюсь на помощь. [...] Program received signal SIGILL, Illegal instruction. 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 30 src/core/ngx_cpuinfo.c: No such file or directory. in src/core/ngx_cpuinfo.c (gdb) bt #0 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 #1 0x0805dbbb in ngx_cpuinfo () at src/core/ngx_cpuinfo.c:84 #2 0x0806e4f7 in ngx_os_init (log=0x80c27a8) at src/os/unix/ngx_posix_init.c:60 [...] cat /proc/cpuinfo processor : 0 vendor_id : CyrixInstead cpu family : 4 model : 1 model name : Cx486SLC stepping: unknown fdiv_bug: no hlt_bug : no f00f_bug: no coma_bug: no fpu : no fpu_exception : no cpuid level : -1 wp : yes flags : bogomips: 44.33 Ваш процессор настолько старый, что не поддерживает инструкцию cpuid. Quick and dirty workaround - добавить return в самом начале функции ngx_cpuinfo() в src/core/ngx_cpuinfo.c: diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c --- a/src/core/ngx_cpuinfo.c +++ b/src/core/ngx_cpuinfo.c @@ -75,6 +75,8 @@ ngx_cpuinfo(void) u_char*vendor; uint32_t vbuf[5], cpu[4], model; +return; + vbuf[0] = 0; vbuf[1] = 0; vbuf[2] = 0; -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: allow/deny and return
On 15.10.2013 16:45, Maxim Dounin wrote: В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. ... я прочитал http://nginx.org/en/docs/http/ngx_http_rewrite_module.html но так и не смог понять, почему allow и deny тут не будут работать. Потому что директивы модуля rewrite - это фактически часть выбора конфигурации. И именно от выбранной конфигурации зависит, что можно, а что - нельзя. вот дословно что сейчас написано в документации: The ngx_http_rewrite_module module is used to change URIs using regular expressions, return redirects, and conditionally select configurations. conditionally select configurations - это только evil директива if. остальные директивы, кроме rewrite, являются unconditional. разве нет? это все похоже на BUG, потому что пользователи обычно подразумевают, что сначала работает access module и только потом - rewrite_module. по крайней мере, в UNIX и даже в WINDOWS все работает именно так: если доступа к файлу нет, никаких операций с ним сделать нельзя. В Антоном конфиге нет файла. Есть инструкция при выборе конфигурации для обработки запросов вернуть ответ с кодом 200. файла нет. но есть location /closed и есть директивы задания доступа кому allow, а кому deny. то что return срабатывает раньше deny - это будет совершенно неожиданно для более чем 99% пользователей nginx... (И да, я таки считаю, что возможность задавать тело ответа была добавлена в диркетиву return зря, не её это работа. Надо было сделать отдельный модуль a la empty gif, подобных вопросов было бы меньше. Но таки этот фарш уже поздно проворачивать назад.) почему поздно? и сейчас можно сделать отдельный модуль return, который будет срабатывать как content handler возвращая код статуса и урл/текст return code [text]; return code URL; return URL; а из модуля rewrite директиву return тогда можно будет вообще убрать. в этом случае - вообще ничего не изменится, кроме того, что директивы из access module отработают раньше, чем return, как это и должно быть. P.S. есть такая книга Безумно просто. Вдохновляющие примеры Apple http://www.mann-ivanov-ferber.ru/books/paperbook/bezumno-prosto/ см. Отрывки из книги, [PDF] Введение. Посох Простоты 113 КБ. из рецензии: «Простота всегда в моде», — говорит автор книги Кен Сигал. «Бизнес тенденции приходят и уходят, но простота остается всегда. Предпочтение простоте заложено в нашей ДНК и это вряд ли изменится в течение нескольких миллиардов лет. Организации, которые понимают это могут превратить простоту в конкурентное преимущество. Поэтому, что это просто жизненный факт: при наличие выбора, человек всегда выберет более простой путь. Внутри огранизации простота экономит время и деньги, создает лучшие условия работы и поднимает боевой дух. Совсем не плохо для концепции, которая не стоит ни копейки». -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: allow/deny and return
Hello! On Tue, Oct 15, 2013 at 07:14:22PM +0300, Gena Makhomed wrote: On 15.10.2013 16:45, Maxim Dounin wrote: В такой конфигурации: location /closed { allow 10.1.1.1; deny all; return 200 secret\n; } allow/deny ни на что не влияют. ... я прочитал http://nginx.org/en/docs/http/ngx_http_rewrite_module.html но так и не смог понять, почему allow и deny тут не будут работать. Потому что директивы модуля rewrite - это фактически часть выбора конфигурации. И именно от выбранной конфигурации зависит, что можно, а что - нельзя. вот дословно что сейчас написано в документации: The ngx_http_rewrite_module module is used to change URIs using regular expressions, return redirects, and conditionally select configurations. conditionally select configurations - это только evil директива if. остальные директивы, кроме rewrite, являются unconditional. разве нет? Все директивы модуля rewrite - это в той или иной степени выбор конфигурации, даже если они unconditional. E.g., банальный set: set $file .htpasswd; auth_basic_user_file /path/to/$file; так или иначе определяет конфигурацию, которая будет в дальнейшем использоваться для обработки запроса. Выполнять сначала access-проверки, и только потом директивы модуля rewrite - ни разу не вариант. Не говоря уже о том, что директивы модуля rewrite - нельзя рассматривать отдельно друг от друга. Это инструкции, которые компилируются и выполняются вместе, о чём подробно рассказано в той самой документации модуля rewrite, со ссылки на которую я и начал. это все похоже на BUG, потому что пользователи обычно подразумевают, что сначала работает access module и только потом - rewrite_module. по крайней мере, в UNIX и даже в WINDOWS все работает именно так: если доступа к файлу нет, никаких операций с ним сделать нельзя. В Антоном конфиге нет файла. Есть инструкция при выборе конфигурации для обработки запросов вернуть ответ с кодом 200. файла нет. но есть location /closed и есть директивы задания доступа кому allow, а кому deny. то что return срабатывает раньше deny - это будет совершенно неожиданно для более чем 99% пользователей nginx... С якобы багом разобрались - отлично. Возвращаемся к исходному разговору - если есть идеи, как _хорошо_ объяснить пользователям, почему так - you are welcome. (И да, я таки считаю, что возможность задавать тело ответа была добавлена в диркетиву return зря, не её это работа. Надо было сделать отдельный модуль a la empty gif, подобных вопросов было бы меньше. Но таки этот фарш уже поздно проворачивать назад.) почему поздно? и сейчас можно сделать отдельный модуль return, который будет срабатывать как content handler возвращая код статуса и урл/текст return code [text]; return code URL; return URL; а из модуля rewrite директиву return тогда можно будет вообще убрать. в этом случае - вообще ничего не изменится, кроме того, что директивы из access module отработают раньше, чем return, как это и должно быть. Потому что семантика директивы return - в общем случае другая. В частности, сломается вот такой вполне типичный конфиг: if ($evil) { return 403; } rewrite ^/something/(.*) /something/else/$1; Аналогичный конфиг, кстати, рассматривается в подробностях тут: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#internals -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx -t Illegal instruction
On Oct 15, 2013, at 7:39 PM, Maxim Dounin mdou...@mdounin.ru wrote: Hello! On Tue, Oct 15, 2013 at 06:14:21PM +0300, Sergey Talchuk wrote: Всем привет! собрал nginx для своей системы без проблем (собирал на ней же). Только похоже при запуске nginx -t не может определить тип процессора. К сожалению, система находится на носителе доступном только для чтения. Поэтому отдебажить системные библиотеки не представляется возможным. Надеюсь на помощь. [...] Program received signal SIGILL, Illegal instruction. 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 30 src/core/ngx_cpuinfo.c: No such file or directory. in src/core/ngx_cpuinfo.c (gdb) bt #0 0x0805dca5 in ngx_cpuid (i=0, buf=0xb950) at src/core/ngx_cpuinfo.c:30 #1 0x0805dbbb in ngx_cpuinfo () at src/core/ngx_cpuinfo.c:84 #2 0x0806e4f7 in ngx_os_init (log=0x80c27a8) at src/os/unix/ngx_posix_init.c:60 [...] cat /proc/cpuinfo processor : 0 vendor_id : CyrixInstead cpu family : 4 model : 1 model name : Cx486SLC stepping: unknown fdiv_bug: no hlt_bug : no f00f_bug: no coma_bug: no fpu : no fpu_exception : no cpuid level : -1 wp : yes flags : bogomips: 44.33 Ваш процессор настолько старый, что не поддерживает инструкцию cpuid. Quick and dirty workaround - добавить return в самом начале функции ngx_cpuinfo() в src/core/ngx_cpuinfo.c: diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c --- a/src/core/ngx_cpuinfo.c +++ b/src/core/ngx_cpuinfo.c @@ -75,6 +75,8 @@ ngx_cpuinfo(void) u_char*vendor; uint32_t vbuf[5], cpu[4], model; +return; + vbuf[0] = 0; vbuf[1] = 0; vbuf[2] = 0; Или что-то такое может работать: diff -r 5483d9e77b32 src/core/ngx_cpuinfo.c --- a/src/core/ngx_cpuinfo.cWed Oct 02 15:07:17 2013 +0400 +++ b/src/core/ngx_cpuinfo.cTue Oct 15 21:03:53 2013 +0400 @@ -20,6 +20,20 @@ static ngx_inline void ngx_cpuid(uint32_ static ngx_inline void ngx_cpuid(uint32_t i, uint32_t *buf) { +uint32_t cpu_vendor[4]; + +__asm__ ( + +movl $0x4778654e, (%0); // store vendor string +movl $0x72446e65, 4(%0); +movl $0x6e657669, 8(%0); +movl $0, 12(%0); + +: : D (cpu_vendor) ); + +if (ngx_strcmp(cpu_vendor, CyrixInstead) == 0) { +return; +} /* * we could not use %ebx as output parameter if gcc builds PIC, -- Sergey Kandaurov pluk...@nginx.com ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx -t Illegal instruction
On 15.10.2013 20:06, Sergey Kandaurov wrote: diff -r 5483d9e77b32 src/core/ngx_cpuinfo.c --- a/src/core/ngx_cpuinfo.cWed Oct 02 15:07:17 2013 +0400 +++ b/src/core/ngx_cpuinfo.cTue Oct 15 21:03:53 2013 +0400 @@ -20,6 +20,20 @@ static ngx_inline void ngx_cpuid(uint32_ static ngx_inline void ngx_cpuid(uint32_t i, uint32_t *buf) { +uint32_t cpu_vendor[4]; + +__asm__ ( + +movl $0x4778654e, (%0); // store vendor string +movl $0x72446e65, 4(%0); +movl $0x6e657669, 8(%0); +movl $0, 12(%0); + +: : D (cpu_vendor) ); + +if (ngx_strcmp(cpu_vendor, CyrixInstead) == 0) { +return; +} есть лучший вариант - стандартный и документированный способ проверить, поддерживает __i386__ процессор команду cpuid или нет: http://wiki.osdev.org/CPUID такой патч был бы более универсальным и более полезным. вопросы про 486 процессор без cpuid периодически возникают. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: WebDav на Windows
инструкция по компиляции на win32 вызывает вопросы у всех, кто с ней сталкивается :-) там фишка в том, что используется bash от mingw и С-компилятор от Microsoft. чтобы configure нашла компилятор в путях, надо поправить переменные. можно, например, сделать по-ленивому. ставите компилятор от Microsoft, в Пуск появляется Visual Studio Command Prompt, запускаете сначала этот ярлык, он прописывает пути, потом из него запускаете msys, а из него уже configure 15 октября 2013 г., 19:00 пользователь antarey nginx-fo...@nginx.us написал: нашел инструкцию - http://nginx.org/en/docs/howto_build_on_win32.html - но честно говоря не совсем понял что за чем. все что у меня получилось - скачать исходники, все остальное - ничего не понятно 1.Start MSYS bash. - bash.exe зачем? 2. Create a build and lib directories, and unpack zlib, PCRE and OpenSSL libraries sources into lib directory: mkdir objs mkdir objs/lib cd objs/lib tar -xzf ../../pcre-8.32.tar.gz tar -xzf ../../zlib-1.2.7.tar.gz tar -xzf ../../openssl-1.0.1e.tar.gz в каком каталоге создавать ети каталоги? в каталоге c:\Program Files\Mercurial\nginx\ ? 3. Run configure script: с помощью чего запускать етот скрипт, чем выполнять и тд. на https://github.com/arut/nginx-dav-ext-module написано Requirements: libexpat-dev - что ето, где взять, куда кидать,как юзать? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243712#msg-243712 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx -t Illegal instruction
On 15.10.2013 21:01, Igor Sysoev wrote: вопросы про 486 процессор без cpuid периодически возникают. Что-то я не припоминаю в рассылке периодических вопросов про процессоры двадцатилетней давности. я визуально помню, что были сообщения про Illegal Instruction при запуске nginx, сейчас порылся в архиве рассылки... причина Illegal Instruction там была другая, падал он не из-за cpuid: http://forum.nginx.org/read.php?21,35305,35305 On 15.10.2013 21:07, Maxim Dounin wrote: вопросы про 486 процессор без cpuid периодически возникают. Я так других случаев подобных вопросов - не помню ни одного, и поиском тоже не находится. Если покажешь пальцем - будет хорошо. именно про cpuid и 386/486 процессор не покажу. не смог сейчас найти. но подозреваю, что попытки запустить nginx на 386/486 были и раньше. Пока что мне кажется, что более продуктивным будет не заниматься некро^Wархеологией. скорее всего да. не буду спорить с разработчиками nginx, вам виднее. хотя у меня до сих пор дома стоит комп с CPU 386DX 40 MHz, 4 MB RAM. - просто рука не поднимается выбросить, он ведь полностью рабочий... -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: WebDav на Windows
Нда намутили ребята по полной, а нельзя блин скомпилировать со всеми модулями и в конфе указывать что включать а что нет ? Попробую, спасибо Илья Шипицин Wrote: --- инструкция по компиляции на win32 вызывает вопросы у всех, кто с ней сталкивается :-) там фишка в том, что используется bash от mingw и С-компилятор от Microsoft. чтобы configure нашла компилятор в путях, надо поправить переменные. можно, например, сделать по-ленивому. ставите компилятор от Microsoft, в Пуск появляется Visual Studio Command Prompt, запускаете сначала этот ярлык, он прописывает пути, потом из него запускаете msys, а из него уже configure 15 октября 2013 г., 19:00 пользователь antarey nginx-fo...@nginx.us написал: нашел инструкцию - http://nginx.org/en/docs/howto_build_on_win32.html - но честно говоря не совсем понял что за чем. все что у меня получилось - скачать исходники, все остальное - ничего не понятно 1.Start MSYS bash. - bash.exe зачем? 2. Create a build and lib directories, and unpack zlib, PCRE and OpenSSL libraries sources into lib directory: mkdir objs mkdir objs/lib cd objs/lib tar -xzf ../../pcre-8.32.tar.gz tar -xzf ../../zlib-1.2.7.tar.gz tar -xzf ../../openssl-1.0.1e.tar.gz в каком каталоге создавать ети каталоги? в каталоге c:\Program Files\Mercurial\nginx\ ? 3. Run configure script: с помощью чего запускать етот скрипт, чем выполнять и тд. на https://github.com/arut/nginx-dav-ext-module написано Requirements: libexpat-dev - что ето, где взять, куда кидать,как юзать? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243712#msg-243712 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,243701,243739#msg-243739 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru