<div dir="ltr">Отписаться<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ср, 23 янв. 2019 г. в 11:15, <<a href="mailto:nginx-ru-request@nginx.org">nginx-ru-request@nginx.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Сообщения, предназначенные для списка<br>
рассылки nginx-ru, отправляйте по адресу<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<br>
Для изменения параметров подписки или<br>
отписки используйте веб-страницу<br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
или отправьте письмо, в теле или теме<br>
которого будет слово 'help', по адресу<br>
<a href="mailto:nginx-ru-request@nginx.org" target="_blank">nginx-ru-request@nginx.org</a><br>
<br>
Адрес администратора этого списка<br>
рассылки:<br>
<a href="mailto:nginx-ru-owner@nginx.org" target="_blank">nginx-ru-owner@nginx.org</a><br>
<br>
При ответе, пожалуйста, измените тему<br>
письма на более содержательную чем "Re:<br>
Содержание дайджеста списка рассылки<br>
nginx-ru..."<br>
В этом номере:<br>
<br>
1. Re: Upstream и заголовок Host (Alex Tkachuk)<br>
2. Re: Upstream и заголовок Host (Maxim Dounin)<br>
3. fcgiwrap не могу запустить (Victor Sudakov)<br>
4. Re: fcgiwrap не могу запустить (Victor Sudakov)<br>
5. Re: fcgiwrap не могу запустить (Victor Sudakov)<br>
<br><br><br>---------- Forwarded message ----------<br>From: Alex Tkachuk <<a href="mailto:alex@tkachuk.pp.ua" target="_blank">alex@tkachuk.pp.ua</a>><br>To: <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>Cc: <br>Bcc: <br>Date: Tue, 22 Jan 2019 14:28:50 +0200<br>Subject: Re: Upstream и заголовок Host<br><div dir="auto">В линуксе есть какой-то прикол с резолвом .local доменов. Гляньте на /etc/nsswitch.conf. Там определяется очередность служб для резолва адресов. Для .local оно как-то отдельно идет.<br><br><div id="gmail-m_1568639184485524921AppleMailSignature" dir="ltr">Отправлено с iPhone</div><div dir="ltr"><br>22 янв. 2019 г., в 09:29, Dmitriy Lyalyuev <<a href="mailto:dmitriy@lyalyuev.info" target="_blank">dmitriy@lyalyuev.info</a>> написал(а):<br><br></div><blockquote type="cite"><div dir="ltr">Если коротко, то - <a href="https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying" target="_blank">https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying</a><div><br></div><div>Второй ответ в треде.</div><div>Но сама схема, как по мне, выглядит костылем. Костылем и лечить.</div><div><br><div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="auto" style="overflow-wrap: break-word;"><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">-- </div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">With best regards,</div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Dmitriy Lyalyuev</div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="mailto:dmitriy@lyalyuev.info" target="_blank">dmitriy@lyalyuev.info</a></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div></div></div></div><br class="gmail-m_1568639184485524921Apple-interchange-newline">
</div>
<div><br><blockquote type="cite"><div>On Jan 22, 2019, at 08:54, CoDDoC via nginx-ru <<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>> wrote:</div><br class="gmail-m_1568639184485524921Apple-interchange-newline"><div>
<div>Доброе время суток!<br><br>Тестовый сервер: test.local. В нем тестовый кластер:<br>upstream cdn {<br> server <IP_1>:<port_1>;<br> server <IP_2>:<port_2>;<br> ....<br>}<br><br>или:<br>upstream cdn {<br> server cdn001.test.local:<port_1>;<br> server cdn002.test.local:<port_2>;<br> ....<br>}<br><br>Не принципиально, ибо "cdn001.test.local" резолвится в <IP_1> и т.д.<br><br>Само собой, "proxy_http_version 1.1;" и из какого-то локейшена "proxy_pass <a href="http://cdn" target="_blank">http://cdn</a>;"<br>Теперь смотрю, что приходит, например, на выбранный бэкенд.<br>Ожидаю там увидеть в заголовке Host значение <IP> или 'cdn###.test.local'.<br>Вижу: http header: "Host: cdn". Что не так?<br><br>Входящий контроль проверяет правильность заголовка Host.<br>Все, что не соответствуют разрешенным, посылаются на 400. Можно, конечно, добавить фильтрацию по белому списку, что-то типа "такой-то IP должен прислать такой-то заголовок". Но (ИМХО) костыль.<br><br>proxy_set_header 'Host' $upstream_addr; - бесполезно.<br>$upstream_addr получает значение ПОСЛЕ proxy_pass.<br><br>Попутно вопрос о $upstream_addr.<br>Ее можно еще как-то использовать, кроме как в логах? Например, отправить в php, но без костылей?<br><br>Спасибо.<br>--</div>
_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></blockquote></div><br></div></div></blockquote><blockquote type="cite"><div dir="ltr"><span>_______________________________________________</span><br><span>nginx-ru mailing list</span><br><span><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a></span><br><span><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></span></div></blockquote></div><br><br><br>---------- Forwarded message ----------<br>From: Maxim Dounin <<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>><br>To: CoDDoC via nginx-ru <<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>><br>Cc: <br>Bcc: <br>Date: Tue, 22 Jan 2019 17:31:37 +0300<br>Subject: Re: Upstream и заголовок Host<br>Hello!<br>
<br>
On Tue, Jan 22, 2019 at 09:54:12AM +0300, CoDDoC via nginx-ru wrote:<br>
<br>
> Доброе время суток!<br>
> <br>
> Тестовый сервер: test.local. В нем тестовый кластер:<br>
> upstream cdn {<br>
> server <IP_1>:<port_1>;<br>
> server <IP_2>:<port_2>;<br>
> ....<br>
> }<br>
> <br>
> или:<br>
> upstream cdn {<br>
> server cdn001.test.local:<port_1>;<br>
> server cdn002.test.local:<port_2>;<br>
> ....<br>
> }<br>
> <br>
> Не принципиально, ибо "cdn001.test.local" резолвится в <IP_1> и т.д.<br>
> <br>
> Само собой, "proxy_http_version 1.1;" и из какого-то локейшена "proxy_pass <a href="http://cdn" rel="noreferrer" target="_blank">http://cdn</a>;"<br>
> Теперь смотрю, что приходит, например, на выбранный бэкенд.<br>
> Ожидаю там увидеть в заголовке Host значение <IP> или 'cdn###.test.local'.<br>
> Вижу: http header: "Host: cdn". Что не так?<br>
<br>
А можно вопрос - почему вы ожидаете увидеть в заголовке Host <br>
"<IP> или 'cdn###.test.local'"?<br>
<br>
Документация по данному вопросу однозначна, да и, скажем, <br>
прописывая в DNS соответствующие A или CNAME-записи никто не <br>
ожидает, что в запросах будет заголовок Host, соответствующий <br>
содержимому записи.<br>
<br>
Почему от блоков upstream вдруг ожидается какое-то другое <br>
поведение?<br>
<br>
На всякий случай уточню - вопрос вполне серьёзный, хочется <br>
понять, на какие аналогии опираются люди, считающие, что заголовок <br>
Host должен зависеть от того, на какой IP-адрес из списка был <br>
отправлен запрос. Вроде бы аналогия с DNS очевидна, и она <br>
подразумевает именно именно то поведение, которое есть сейчас, но <br>
почему-то людей, предполагающих другое поведение, много.<br>
<br>
[...]<br>
<br>
> Попутно вопрос о $upstream_addr.<br>
> Ее можно еще как-то использовать, кроме как в логах? Например, отправить в php, но без костылей?<br>
<br>
Нет. Запрос формируется до выбора бэкенда, на который этот запрос <br>
будет отправлен (а в рамках proxy_next_upstream - один и тот же <br>
запрос может быть отправлен на несколько бэкендов). Соотвественно <br>
переменную $upstream_addr можно использовать в логах (а равно при <br>
обработке ответа бэкенда - скажем, в add_header), но бессмысленно <br>
использовать в запросе на бэкенд - на момент формирования запроса <br>
она всегда будет пустой.<br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" rel="noreferrer" target="_blank">http://mdounin.ru/</a><br>
<br>
<br><br><br>---------- Forwarded message ----------<br>From: Victor Sudakov <<a href="mailto:vas@mpeks.tomsk.su" target="_blank">vas@mpeks.tomsk.su</a>><br>To: <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>Cc: <br>Bcc: <br>Date: Wed, 23 Jan 2019 00:23:57 +0700<br>Subject: fcgiwrap не могу запустить<br>Коллеги, снимите с ручника пожалуйста, что не так?<br>
<br>
nginx (FreeBSD 11.2, nginx-1.14.1_1,2) при обращении к /cgi-bin/test<br>
возвращает "403 Forbidden". Самое странное, что в error.log по этому<br>
поводу ничего не пишется. В access.log есть совершенно неинформативное <br>
<br>
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"<br>
<br>
Чего ему не хватает? И как хотя бы включить ошибки в error.log?<br>
<br>
nginx.conf:<br>
<br>
location /cgi-bin/ {<br>
root /usr/local/www/cgi-bin;<br>
include /usr/local/etc/nginx/fastcgi_params;<br>
fastcgi_pass unix:/tmp/fcgiwrap.socket;<br>
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>
}<br>
<br>
<br>
# ls -al /tmp/fcgiwrap.socket<br>
srw------- 1 www wheel 0 22 янв. 23:33 /tmp/fcgiwrap.socket<br>
<br>
<br>
rc.conf.local:<br>
<br>
fcgiwrap_enable="YES"<br>
fcgiwrap_socket_owner="www"<br>
fcgiwrap_user="www"<br>
fcgiwrap_socket="unix:/tmp/fcgiwrap.socket"<br>
fcgiwrap_socket_mode="0600"<br>
<br>
<br>
# ls -al /usr/local/www/cgi-bin<br>
total 12<br>
drwxr-xr-x 2 root wheel 512 22 янв. 22:58 .<br>
drwxr-xr-x 4 root wheel 512 22 янв. 22:56 ..<br>
-rwxr-xr-x 1 root wheel 103 22 янв. 22:58 test<br>
<br>
# ps axwwu | grep cgi<br>
www 85035 0,0 0,1 6388 1808 - Is 00:11 0:00,00 daemon: /usr/local/sbin/fcgiwrap[85037] (daemon)<br>
www 85037 0,0 0,1 6356 1832 - I 00:11 0:00,00 /usr/local/sbin/fcgiwrap -s unix:/tmp/fcgiwrap.socket<br>
<br>
<br>
Если сказать<br>
su -m www -c 'telnet /tmp/fcgiwrap.socket'<br>
то соединяется с fastcgi-сервером (я правда не знаю, какую команду там<br>
сказать можно, но права доступа к сокету у www явно есть).<br>
<br>
-- <br>
Victor Sudakov, VAS4-RIPE, VAS47-RIPN<br>
2:5005/49@fidonet <a href="http://vas.tomsk.ru/" rel="noreferrer" target="_blank">http://vas.tomsk.ru/</a><br>
<br>
<br><br><br>---------- Forwarded message ----------<br>From: Victor Sudakov <<a href="mailto:vas@mpeks.tomsk.su" target="_blank">vas@mpeks.tomsk.su</a>><br>To: <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>Cc: <br>Bcc: <br>Date: Wed, 23 Jan 2019 01:02:01 +0700<br>Subject: Re: fcgiwrap не могу запустить<br>Victor Sudakov wrote:<br>
> <br>
> <br>
> Если сказать<br>
> su -m www -c 'telnet /tmp/fcgiwrap.socket'<br>
> то соединяется с fastcgi-сервером (я правда не знаю, какую команду там<br>
> сказать можно, но права доступа к сокету у www явно есть).<br>
<br>
FastCGI server сам по себе однако работает:<br>
<br>
# ~/bin/debug_cgi.sh<br>
+ SCRIPT_FILENAME=/usr/local/www/cgi-bin/test<br>
+ export SCRIPT_FILENAME<br>
+ REQUEST_URI=/test<br>
+ export REQUEST_URI<br>
+ REQUEST_METHOD=GET<br>
+ export REQUEST_METHOD<br>
+ su -m www -c '/usr/local/bin/cgi-fcgi -bind -connect /tmp/fcgiwrap.socket'<br>
Content-type: text/plain<br>
<br>
This is a test script<br>
This is a test script<br>
This is a test script<br>
This is a test script<br>
This is a test script<br>
This is a test script<br>
This is a test script<br>
<br>
<br>
-- <br>
Victor Sudakov, VAS4-RIPE, VAS47-RIPN<br>
2:5005/49@fidonet <a href="http://vas.tomsk.ru/" rel="noreferrer" target="_blank">http://vas.tomsk.ru/</a><br>
<br>
<br><br><br>---------- Forwarded message ----------<br>From: Victor Sudakov <<a href="mailto:vas@mpeks.tomsk.su" target="_blank">vas@mpeks.tomsk.su</a>><br>To: <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>Cc: <br>Bcc: <br>Date: Wed, 23 Jan 2019 15:36:23 +0700<br>Subject: Re: fcgiwrap не могу запустить<br>fcgiwrap с ключом -f маленько прояснил ситуацию, имею теперь сообщение<br>
об ошибке в логе nginx:<br>
<br>
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: "<a href="http://admin.sibptus.ru" rel="noreferrer" target="_blank">admin.sibptus.ru</a>"<br>
<br>
С учетом нижепоказанного, чего ещё недостаёт?<br>
<br>
location /cgi-bin/ {<br>
root /usr/local/www/cgi-bin;<br>
include /usr/local/etc/nginx/fastcgi_params;<br>
fastcgi_pass unix:/tmp/fcgiwrap.socket;<br>
}<br>
<br>
<br>
$ egrep 'DOCUMENT_ROOT|SCRIPT_NAME' /usr/local/etc/nginx/fastcgi_params<br>
fastcgi_param SCRIPT_NAME $fastcgi_script_name;<br>
fastcgi_param DOCUMENT_ROOT $document_root;<br>
<br>
$ ls -al /usr/local/www/cgi-bin<br>
total 12<br>
drwxr-xr-x 2 root wheel 512 23 янв. 00:58 .<br>
drwxr-xr-x 4 root wheel 512 22 янв. 22:56 ..<br>
-rwxr-xr-x 1 root wheel 313 23 янв. 00:58 test<br>
<br>
<br>
<br>
<br>
-- <br>
Victor Sudakov, VAS4-RIPE, VAS47-RIPN<br>
2:5005/49@fidonet <a href="http://vas.tomsk.ru/" rel="noreferrer" target="_blank">http://vas.tomsk.ru/</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>