Re: Дайджест списка рассылки nginx-ru; том 111, выпуск 19

MazalTov Tov bmp.line на gmail.com
Ср Янв 23 09:44:08 UTC 2019


Отписаться


ср, 23 янв. 2019 г. в 11:15, <nginx-ru-request на nginx.org>:

> Сообщения, предназначенные для списка
> рассылки nginx-ru, отправляйте по адресу
>         nginx-ru на nginx.org
>
> Для изменения параметров подписки или
> отписки используйте веб-страницу
>         http://mailman.nginx.org/mailman/listinfo/nginx-ru
> или отправьте письмо, в теле или теме
> которого будет слово 'help', по адресу
>         nginx-ru-request на nginx.org
>
> Адрес администратора этого списка
> рассылки:
>         nginx-ru-owner на nginx.org
>
> При ответе, пожалуйста, измените тему
> письма на более содержательную чем "Re:
> Содержание дайджеста списка рассылки
> nginx-ru..."
> В этом номере:
>
>    1. Re: Upstream и заголовок Host (Alex Tkachuk)
>    2. Re: Upstream и заголовок Host (Maxim Dounin)
>    3. fcgiwrap не могу запустить (Victor Sudakov)
>    4. Re: fcgiwrap не могу запустить (Victor Sudakov)
>    5. Re: fcgiwrap не могу запустить (Victor Sudakov)
>
>
>
> ---------- Forwarded message ----------
> From: Alex Tkachuk <alex на tkachuk.pp.ua>
> To: nginx-ru на nginx.org
> Cc:
> Bcc:
> Date: Tue, 22 Jan 2019 14:28:50 +0200
> Subject: Re: Upstream и заголовок Host
> В линуксе есть какой-то прикол с резолвом .local доменов. Гляньте на
> /etc/nsswitch.conf. Там определяется очередность служб для резолва адресов.
> Для .local оно как-то отдельно идет.
>
> Отправлено с iPhone
>
> 22 янв. 2019 г., в 09:29, Dmitriy Lyalyuev <dmitriy на lyalyuev.info>
> написал(а):
>
> Если коротко, то -
> https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying
>
> Второй ответ в треде.
> Но сама схема, как по мне, выглядит костылем. Костылем и лечить.
>
> --
> With best regards,
> Dmitriy Lyalyuev
> dmitriy на lyalyuev.info
>
>
>
> On Jan 22, 2019, at 08:54, CoDDoC via nginx-ru <nginx-ru на nginx.org> wrote:
>
> Доброе время суток!
>
> Тестовый сервер: test.local. В нем тестовый кластер:
> upstream cdn {
>     server <IP_1>:<port_1>;
>     server <IP_2>:<port_2>;
>     ....
> }
>
> или:
> upstream cdn {
>     server cdn001.test.local:<port_1>;
>     server cdn002.test.local:<port_2>;
>     ....
> }
>
> Не принципиально, ибо "cdn001.test.local" резолвится в <IP_1> и т.д.
>
> Само собой, "proxy_http_version 1.1;" и из какого-то локейшена "proxy_pass
> http://cdn;"
> Теперь смотрю, что приходит, например, на выбранный бэкенд.
> Ожидаю там увидеть в заголовке Host значение <IP> или 'cdn###.test.local'.
> Вижу: http header: "Host: cdn". Что не так?
>
> Входящий контроль проверяет правильность заголовка Host.
> Все, что не соответствуют разрешенным, посылаются на 400. Можно, конечно,
> добавить фильтрацию по белому списку, что-то типа "такой-то IP должен
> прислать такой-то заголовок". Но (ИМХО) костыль.
>
> proxy_set_header 'Host' $upstream_addr; - бесполезно.
> $upstream_addr получает значение ПОСЛЕ proxy_pass.
>
> Попутно вопрос о $upstream_addr.
> Ее можно еще как-то использовать, кроме как в логах? Например, отправить в
> php, но без костылей?
>
> Спасибо.
> --
> _______________________________________________
> 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
>
>
>
>
> ---------- Forwarded message ----------
> From: Maxim Dounin <mdounin на mdounin.ru>
> To: CoDDoC via nginx-ru <nginx-ru на nginx.org>
> Cc:
> Bcc:
> Date: Tue, 22 Jan 2019 17:31:37 +0300
> Subject: Re: Upstream и заголовок Host
> Hello!
>
> On Tue, Jan 22, 2019 at 09:54:12AM +0300, CoDDoC via nginx-ru wrote:
>
> > Доброе время суток!
> >
> > Тестовый сервер: test.local. В нем тестовый кластер:
> > upstream cdn {
> >     server <IP_1>:<port_1>;
> >     server <IP_2>:<port_2>;
> >     ....
> > }
> >
> > или:
> > upstream cdn {
> >     server cdn001.test.local:<port_1>;
> >     server cdn002.test.local:<port_2>;
> >     ....
> > }
> >
> > Не принципиально, ибо "cdn001.test.local" резолвится в <IP_1> и т.д.
> >
> > Само собой, "proxy_http_version 1.1;" и из какого-то локейшена
> "proxy_pass http://cdn;"
> > Теперь смотрю, что приходит, например, на выбранный бэкенд.
> > Ожидаю там увидеть в заголовке Host значение <IP> или
> 'cdn###.test.local'.
> > Вижу: http header: "Host: cdn". Что не так?
>
> А можно вопрос - почему вы ожидаете увидеть в заголовке Host
> "<IP> или 'cdn###.test.local'"?
>
> Документация по данному вопросу однозначна, да и, скажем,
> прописывая в DNS соответствующие A или CNAME-записи никто не
> ожидает, что в запросах будет заголовок Host, соответствующий
> содержимому записи.
>
> Почему от блоков upstream вдруг ожидается какое-то другое
> поведение?
>
> На всякий случай уточню - вопрос вполне серьёзный, хочется
> понять, на какие аналогии опираются люди, считающие, что заголовок
> Host должен зависеть от того, на какой IP-адрес из списка был
> отправлен запрос.  Вроде бы аналогия с DNS очевидна, и она
> подразумевает именно именно то поведение, которое есть сейчас, но
> почему-то людей, предполагающих другое поведение, много.
>
> [...]
>
> > Попутно вопрос о $upstream_addr.
> > Ее можно еще как-то использовать, кроме как в логах? Например, отправить
> в php, но без костылей?
>
> Нет.  Запрос формируется до выбора бэкенда, на который этот запрос
> будет отправлен (а в рамках proxy_next_upstream - один и тот же
> запрос может быть отправлен на несколько бэкендов).  Соотвественно
> переменную $upstream_addr можно использовать в логах (а равно при
> обработке ответа бэкенда - скажем, в add_header), но бессмысленно
> использовать в запросе на бэкенд - на момент формирования запроса
> она всегда будет пустой.
>
> --
> Maxim Dounin
> http://mdounin.ru/
>
>
>
>
> ---------- Forwarded message ----------
> From: Victor Sudakov <vas на mpeks.tomsk.su>
> To: nginx-ru на nginx.org
> Cc:
> Bcc:
> Date: Wed, 23 Jan 2019 00:23:57 +0700
> Subject: fcgiwrap не могу запустить
> Коллеги, снимите с ручника пожалуйста, что не так?
>
> nginx (FreeBSD 11.2, nginx-1.14.1_1,2) при обращении к /cgi-bin/test
> возвращает "403 Forbidden". Самое странное, что в error.log по этому
> поводу ничего не пишется. В access.log есть совершенно неинформативное
>
> 2001:470:35:7af::2 - - [22/Jan/2019:23:37:46 +0700] "GET /cgi-bin/test
> HTTP/1.1" 403 25 "-" "Mozilla/5.0 (X11; FreeBSD amd64; rv:64.0)
> Gecko/20100101 Firefox/64.0"
>
> Чего ему не хватает? И как хотя бы включить ошибки в error.log?
>
> nginx.conf:
>
>         location /cgi-bin/ {
>             root   /usr/local/www/cgi-bin;
>             include /usr/local/etc/nginx/fastcgi_params;
>             fastcgi_pass unix:/tmp/fcgiwrap.socket;
>             fastcgi_param SCRIPT_FILENAME
> $document_root$fastcgi_script_name;
>         }
>
>
> # ls -al /tmp/fcgiwrap.socket
> srw-------  1 www  wheel  0 22 янв.  23:33 /tmp/fcgiwrap.socket
>
>
> rc.conf.local:
>
> fcgiwrap_enable="YES"
> fcgiwrap_socket_owner="www"
> fcgiwrap_user="www"
> fcgiwrap_socket="unix:/tmp/fcgiwrap.socket"
> fcgiwrap_socket_mode="0600"
>
>
> # ls -al /usr/local/www/cgi-bin
> total 12
> drwxr-xr-x  2 root  wheel  512 22 янв.  22:58 .
> drwxr-xr-x  4 root  wheel  512 22 янв.  22:56 ..
> -rwxr-xr-x  1 root  wheel  103 22 янв.  22:58 test
>
> # ps axwwu | grep cgi
> www      85035   0,0  0,1   6388  1808  -  Is   00:11           0:00,00
> daemon: /usr/local/sbin/fcgiwrap[85037] (daemon)
> www      85037   0,0  0,1   6356  1832  -  I    00:11           0:00,00
> /usr/local/sbin/fcgiwrap -s unix:/tmp/fcgiwrap.socket
>
>
> Если сказать
> su -m www -c 'telnet /tmp/fcgiwrap.socket'
> то соединяется с fastcgi-сервером (я правда не знаю, какую команду там
> сказать можно, но права доступа к сокету у www явно есть).
>
> --
> Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
> 2:5005/49 на fidonet http://vas.tomsk.ru/
>
>
>
>
> ---------- Forwarded message ----------
> From: Victor Sudakov <vas на mpeks.tomsk.su>
> To: nginx-ru на nginx.org
> Cc:
> Bcc:
> Date: Wed, 23 Jan 2019 01:02:01 +0700
> Subject: Re: fcgiwrap не могу запустить
> Victor Sudakov wrote:
> >
> >
> > Если сказать
> > su -m www -c 'telnet /tmp/fcgiwrap.socket'
> > то соединяется с fastcgi-сервером (я правда не знаю, какую команду там
> > сказать можно, но права доступа к сокету у www явно есть).
>
> FastCGI server сам по себе однако работает:
>
> # ~/bin/debug_cgi.sh
> + SCRIPT_FILENAME=/usr/local/www/cgi-bin/test
> + export SCRIPT_FILENAME
> + REQUEST_URI=/test
> + export REQUEST_URI
> + REQUEST_METHOD=GET
> + export REQUEST_METHOD
> + su -m www -c '/usr/local/bin/cgi-fcgi -bind -connect
> /tmp/fcgiwrap.socket'
> Content-type: text/plain
>
> This is a test script
> This is a test script
> This is a test script
> This is a test script
> This is a test script
> This is a test script
> This is a test script
>
>
> --
> Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
> 2:5005/49 на fidonet http://vas.tomsk.ru/
>
>
>
>
> ---------- Forwarded message ----------
> From: Victor Sudakov <vas на mpeks.tomsk.su>
> To: nginx-ru на nginx.org
> Cc:
> Bcc:
> Date: Wed, 23 Jan 2019 15:36:23 +0700
> Subject: Re: fcgiwrap не могу запустить
> fcgiwrap с ключом -f маленько прояснил ситуацию, имею теперь сообщение
> об ошибке в логе nginx:
>
> 2019/01/23 15:29:36 [error] 93721#100134: *5 FastCGI sent in stderr:
> "Cannot get script name, are DOCUMENT_ROOT and SCRIPT_NAME (or
> SCRIPT_FILENAME) set and is the script executable?" while reading response
> header from upstream, client: 10.10.10.3, server: , request: "GET
> /cgi-bin/test HTTP/1.1", upstream: "fastcgi://unix:/tmp/fcgiwrap.socket:",
> host: "admin.sibptus.ru"
>
> С учетом нижепоказанного, чего ещё недостаёт?
>
>         location /cgi-bin/ {
>             root   /usr/local/www/cgi-bin;
>             include /usr/local/etc/nginx/fastcgi_params;
>             fastcgi_pass unix:/tmp/fcgiwrap.socket;
>         }
>
>
> $ egrep 'DOCUMENT_ROOT|SCRIPT_NAME' /usr/local/etc/nginx/fastcgi_params
> fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
> fastcgi_param  DOCUMENT_ROOT      $document_root;
>
> $ ls -al /usr/local/www/cgi-bin
> total 12
> drwxr-xr-x  2 root  wheel  512 23 янв.  00:58 .
> drwxr-xr-x  4 root  wheel  512 22 янв.  22:56 ..
> -rwxr-xr-x  1 root  wheel  313 23 янв.  00:58 test
>
>
>
>
> --
> Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
> 2:5005/49 на fidonet http://vas.tomsk.ru/
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20190123/fe6c4e28/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru