LINUX.ORG.RU

unix socket странное поведение

 ,


0

1

делаю связку nginx и gunicorn через сокет

upstream medical_gunicorn_server {
    server unix:/run/medical_gunicorn/medical_gunicorn.socket fail_timeout=0;
}


server {   

    location / {

        proxy_pass http://medical_gunicorn_server;
        proxy_redirect off;
        
    }

в строке запуска gunicorn прописываю

 --bind unix:/run/medical_gunicorn/medical_gunicorn.socket \\
        --error-logfile //var/log/medical_gunicorn/error.log \
        --access-logfile //var/log/medical_gunicorn/access.log \
        --pid /run/medical_gunicorn/medical_gunicorn.pid \

но в итоге получаю ошибку

2024/02/07 08:03:58 [error] 10898#10898: *1849 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: , server: medical.ua, request: «GET / HTTP/1.1», upstream: «http://unix:/run/medical_gunicorn/medical_gunicorn.socket:/», host: «medical.ua»

при запуске команды на сервере

wget http://unix:/run/medical_gunicorn/medical_gunicorn.socket

мне выдает

 wget http://unix:/run/medical_gunicorn/medical_gunicorn.socket:/
--2024-02-07 08:39:45--  http://unix/run/medical_gunicorn/medical_gunicorn.socket:/
Resolving unix (unix)... 193.201.60.43
Connecting to unix (unix)|193.201.60.43|:80... connected.

на других серверах не резолвит unix

как это исправить?

У тебя лишний слеш в строке запуска.

А wget такой синтаксис не понимает и не будет понимать. И с локальными сокетами он работать не умеет, а если когда-то и научится - то с другим синтаксисом.

И я не знаю поддерживает ли такой синтаксис gunicorn (и что это за прога вообще).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

главный вопрос собственно вот какой- почему такая команда срабaтывает

 ping unix
PING unix.com.ua (193.201.60.43) 56(84) bytes of data.
64 bytes from webs.mik.ua (193.201.60.43): icmp_seq=1 ttl=59 time=1.98 ms
64 bytes from webs.mik.ua (193.201.60.43): icmp_seq=2 ttl=59 time=0.752 ms```
limpopo44
() автор топика
Ответ на: комментарий от limpopo44

Днс ничего не перехватывает. Я ещё раз повторю, что wget такой синтаксис не поддерживает. Это синтаксис конфиг файла nginx и вряд ли кроме него он ещё где-то есть. Насчёт gunicorn не знаю - читай документацию к нему. Большинство программ с юникс-сокетами работать не умеет, либо умеет но с другим синтаксисом адреса сокета.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

на другом сервере крутится nginx+gunicorn через unix сокет и все работает, я переношу на другой сервер,все конфиги и команды перенес но вот лезет такая фигня с сокетом

limpopo44
() автор топика
Ответ на: комментарий от limpopo44

Во-первых ты лишний слеш убрал?

Во-вторых, nginx пишет что gunicorn дропает ему соединение. Смотри логи gunicorn (только сначала убери слеш чтоб они писаться начали) чтоб узнать почему так происходит.

Скачать что-то с юникс-сокета консольными прогами или браузером не получится. Может быть только netcat-ом, если знаешь синтаксис http и твоя версия netcat поддерживает unix-сокеты (их три разных существует).

firkax ★★★★★
()