LINUX.ORG.RU

84
Всего сообщений: 1496

Нужен человек очень хорошо разбирающийся в веб серверах. Удаленка в неосновное время.

Нужен профессионал, который по основной работе занимается постоянно сопровождением web серверов и знает все тонкости. Возможно имеет опыт в high-load.

Небольшая группа разработчиков пишет CRM на PHP. Eще есть вордпрессы. CRM обычно общается с веб сайтами, с PBX и многим другим.

Поднять apache/nginx с php-fpm может любой, для этого много ума не надо. Нужно понимать почему, например, обработка php запроса на одном сервере идет 10 секунд, а на другом такая же 5 минут. Нужно уметь искать бутылочное горло и фиксить эти проблемы.

Стек обычный: apache/nginx/php-fpm/mysql. Можно ставить на ось, можно пихать в докеры, можно в k8s(если хочется).

Если есть другие скилы, то возможно они будут тоже применимы и оплачены.

Фирма в Германии, оплата белым по договору или счетам.

По деньгам что-то около 30 евро в час или какая-то сумма за конкретные кейсы. Ребята понимают, что платят не за время ,а за то, что человек знает как сделать, поэтому за конкретный кейс может быть выставлена и оплачена адекватная сумма. ( договоримся)

Нагрузка примерно 1 час в день, иногда меньше , иногда больше.

 , , ,

constin ()

Nginx - разные root для разных location

Подскажите пожалуйста как сделать подобное:

http://my.server/file.n1      -> /aaa/bbb/ccc/file.n1
http://my.server/loc1/file.n2 -> /aaa/bbb/ccc/loc1/file.n2
http://my.server/loc2/file.n3 -> /ddd/eee/fff/file.n3 (не это: /ddd/eee/fff/loc2/file.n3)

То есть, если в uri указан каталог «loc2», то нужно из uri убрать этот каталог и использовать другой location.

Вот так не работает:

    server {
        root /aaa/bbb/ccc;
        location / {
            ...
        }
        location /loc2 {
            rewrite ^/loc2/(.*) $1 last;
            root /ddd/eee/fff;
            ...
        }

 

KLfer ()

Про ssl сертификаты

Вопрос: в чем прелесть fullcahin.pem вместо server.pem ?

В fullcahin у нас server + root + intermediate сертификаты.

В server - только server.

 , ,

vel ()

Zabbix пишет Nginx: служба не работает

Привет. Сообщение «Nginx: служба не работает» регулярно появляется в Zabbix. Хотя сервис работает нормально. На этом сервере еще работает Apache (он прослушивает локальные порты 8887 и 8888), и zabix иногда отображает ошибку «Apache: Service is down». Хотя апач работает без проблем. В чем может быть проблема? Службы подключаются через Apache by Zabbix agent и Nginx by Zabbix agent. Zabbix версии 5.4 . Стоит CentOS 7, apache2.4.6, nginx 1.18.0, zabbix agent 5.4.4. Заранее спасибо.

 , , ,

sasha198407 ()

uWSGI 'invalid request block size'

Иногда вылезает subj. Может несколько месяцев не быть, а потом полдня валится. Судя по всему что-то загадочное прилетает от HAProxy вместо «обычной» проверки доступности.

Увеличить буфер не проблема, но хотелось бы понять «что где валяется и когда всё это кончится».

Есть у uWSGI какой-нибудь секретный способ писать в лог не просто «Invalid block request size», а дату/время, источник запроса или ещё лучше – дампить этот запрос в отдельный файл?

 , ,

frob ()

NGINX upstream не работает при подключении 443 SSL порта

Друзья, всем привет.

Есть сайт, который через порт 8080 дает доступ к API расширению. По обычному http протоколу все работает на ура. Вот пытаюсь его на ssl протокол перевести, и тут есть un problema… Сам сайт отображается по ssl без проблем, но upstream api никак не получается настроить.

Система:
Ubuntu 16.04.6 LTS
nginx/1.10.3

Вот конфиг при котором все ОК на http протоколе:

server {
        listen 80;
        listen [::]:80;

        server_name mysite.com www.mysite.com;

        root /home/user/mysite/www/dist;
        index index.html;


        location / {
               try_files $uri $uri/ =404;
        }

        location /api {
                proxy_pass http://api;

        }

}


upstream api {
    server 127.0.0.1:8080;
}

Вот конфиг на https протоколе:

server {
        listen 80;
        listen [::]:80;
        server_name mysite.com www.mysite.com;
      # return 301 https://$host$request_uri;

        root /home/user/mysite/www/dist;
        index index.html;

        location / {
               try_files $uri $uri/ =404;
        }

        location /api {
                proxy_pass http://api;
        }

}

server {
        listen  443 ssl;
        server_name mysite.com www.mysite.com;

        ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
        ssl_dhparam /etc/nginx/dhparam.pem;


        root /home/user/mysite/www/dist;
        index index.html;

        location / {
               try_files $uri $uri/ =404;
        }

        location /api {
                proxy_pass http://api;
        }
}


upstream api {
    server 127.0.0.1:8080;
}

При таком конфиге http версия тоже работает ок, https версия - сайт коннектит, API нет. Если ставлю редирект return 301 сайт коннектит, API нет.

Как я понял, в location /api нужно указывать https proxy_pass https://api и путь где лежит сертификат и ключ только в случае, если хочешь сделать отдельно только upstream api по SSl подключению, а сам сайт оставить на http протоколе.

Весь мануал NGINX-а перерыл, чет не пойму, что ему надобно еще.

 , ,

mcbay ()

Брокер POST запросов с хедерами

Привет. Ребят подскажите пожалуйста какой-нить брокер с гарантированной доставкой POST запросов.

Пример такой: Прилетает на nginx/haproxy(балансер) -> кладётся в очередь -> из очереди пушиться (причём нужна именно гарантированная доставка) в nginx -> php.app.

AMPQ не подходит т,к нет возможности вносить изменения в webhook сторонних разработчиков, а хочется как-то сбалансировать траф + при падении бека оставить в живых очередь.

Буду безмерно благодарен за подсказки.

 , , ,

cvat06 ()

nginx подстановка аргументов

Всем привет. Помогите разобраться с подстановкой аргументов Не могу понять, как подставить в URL при заходе на сайт. Например заходишь по ссылке на: https://site.com А тебе nginx поставляет(редиректит)

https://site.com/?city=[город]&facility=[еще одна переменная]

Пытался сделать таким методом

rewrite ^(.*) http://$server_name/?city=[город]&facility=[еще одна переменная];
if ($http_host = $server_name) {
  rewrite ^(.*)$  http://$server_name/?city=[город]&facility=[еще одна переменная] permanent;
}

и получаю ошибки to many redirect подскажите, что я делаю не так

 

shift-47 ()

Nginx: перенаправление на %2A.domain.ru

Столкнулся в Debain 10, nginx 1.14.2-2+deb10u3 версии.

Конфиг такой:

server {
    listen 80;
    server_name *.domain.ru;
    return 301 https://$host$request_uri;
}


server {
    server_name org1.domain.ru;
    listen *:443 ssl;
    #other options
}

И да это еще один аналогичный топик в интернетах.

Может Debian 10 слишком стар и пора переходить на 11?

 

Shulman ()

Поддомены в nginx

Добрый день

Есть необходимость прописать около 70 поддоменов на хосте nginx.

Думаю это же жирно для каждого домена вида company.domain.ru создавать файл?

Как это сделать лучше?

Да, получается у каждого поддомена будет общая строка, это http_proxy, и своя собственная, например IP с которого туда можно попадать.

Да не совсем понимаю как будет выглядеть строка с путем для сертификата Letsencript: в секции для домена, или в общей секции?

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

 

Shulman ()

Nginx fastcgi buffers

Доброго времени суток!

Есть nginx + php-fpm. Всё работает, но в логи иногда прилетают сообщения:

... [warn] ... an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/2/00/0000000002 while reading upstream, client: 192.168.2.50, server: test.site, request: "GET /... HTTP/2.0", upstream: "fastcgi://unix:/run/php/php-fpm.sock:", ...

Гугл подсказывает, что нужно увеличивать fastcgi_buffers и fastcgi_busy_buffers_size, но во всех статьях эти параметры увеличиваются без объяснения, т.е. пишут примерно в таком духе: «Вместо 4k поставьте 32k и будет вам счастье».

Поэтому, глубокоуважаемые жители форума, прошу подсказать, каким образом вычислить значение, на которое нужно увеличить буферы, если, конечно, это значение можно вычислить.

P.S.: пытался включать уровень debug в nginx, просто охренел от количества инфы, туда заливающейся, но так и не нашёл ответа на вопрос.

 ,

speed_vm ()

Проблемы с загрузкой NextCloud после обновления CentOs

Ребята!!! Нужна помощь, обновил на свою голову пакеты в Centos8, yum apdate, все прошло хорошо, но появилась проблема, на сервере крутится NextCloud на Nginx, после обновления он стал выкидывать страницу со следующим содержимым:

Ошибка Невозможно выполнить запись в каталог «config».

Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации.. Если для файла «config.php» должен быть установлен режим «только чтение», задайте параметру «config_is_read_only» значение «true». Изучите https://docs.nextcloud.com/server/21/go.php?to=admin-config.

Я добавил на все эти файлы и папки полные права, ничего не поменялось. Подскажите, что можно с этим сделать, гугление не помогло, похожих проблем ни у кого не было. Как это можно отдебажить и понять, что ему нада.

 , ,

lex1010011010 ()

Nginx авторизация через pam (pam_linotp.so)

Приветствую всех.

Пытаюсь настроить авторизацию nginx через pam. Вызывается модуль pam_linotp.so

Тестовый конфиг nginx:

location / {
            root   html;
            index  index.html index.htm;
            auth_pam              "Secure Zone";
            auth_pam_service_name "nginx";
            auth_pam_set_pam_env  on;
        }

Pam - модуль:

# cat /etc/pam.d/nginx 
# Include LinOTP authentication
auth [success=1 default=ignore]  pam_linotp.so url=https://172.30.254.9/validate/simplecheck debug nosslhostnameverify nosslcertverify
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

Кусок лог-файла:

linotp:DEBUG: "freeing escaped value for user"
Aug  4 18:01:35 lotp-nginx-test pam_linotp[28383]: linotp:DEBUG: "freeing escaped value for pass"
Aug  4 18:01:35 lotp-nginx-test pam_linotp[28383]: linotp:DEBUG: "connecting to url:https://172.30.254.9/validate/simplecheck with parameters user=user1&pass=user1"
Aug  4 18:01:35 lotp-nginx-test pam_linotp[28383]: linotp:DEBUG: "result :-("
Aug  4 18:01:35 lotp-nginx-test pam_linotp[28383]: linotp:INFO: "user 'user1' rejected"

В форму авторизации nginx, указываю логин - user1 и пароль - 12212122(Например). Но судя по логу в значение - pass = user=user1&pass=user1, подставляется логин.

Может кто нибудь знает как можно переопределить значение pass? Или есть может есть очевидное решение?

 , ,

lckrspirit ()

docker nginx proxy url

Ребят не подскажите где причина того , что я захожу на "https://wi.me.org" , но как только ввиду логи и пароль он перекинет запрос на http://mediawiki/index.php/ mediawiki = имя контейнера где то как то nginx передает имя

server { 
    listen       80;
    server_name  wi.me.org ;
    error_log  /var/log/nginx/wi-error.log;
    access_log /var/log/nginx/wi-access.log;
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
#    location / {
#        proxy_pass      http://mediawiki:80;
#        }
    location / {
        return 301 https://wi.me.org$uri;
    }
}
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        error_log  /var/log/nginx/wi-error.log;
        access_log /var/log/nginx/wi-access.log;
        server_name wi.me.org;
        server_tokens off;
        ssl_certificate /etc/nginx/ssl/live/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/live/privkey.pem;
        ssl_buffer_size 8k;
        ssl_dhparam /etc/nginx/ssl/dhparam-2048.pem;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
        ssl_ecdh_curve secp384r1;
        ssl_session_tickets off;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8;
        location / {
                try_files $uri @wi;
        }
        location @wi {
        proxy_pass      http://mediawiki:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        }
 }

 , ,

dispancer ()

Поменять пароль юзера через php script

Уважаемое коммюнити,

прошу подсказать, где может быть затык:

1. есть сервер на OpenSUSE 15.2
2. есть php script:
3. PHP7 и Nginx

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
ini_set('display_error', true);

$cmd = 'sudo -u root sh -c \'/usr/bin/echo "username:pass" | sudo /usr/sbin/chpasswd 2>&1\'';

exec($cmd,$output,$return_val);
print_r($output);
echo $return_val;
?>


Скрипт возвращает следующую строку в браузере:

Array ( [0] => chpasswd: (user username) pam_chauthtok() failed, error: [1] => Authentication token lock busy [2] => chpasswd: (line 1, user username) password not changed ) 1

При этом в шелле скрипт отрабатывает без проблем.

права для юзера nginx в sudoers выглядят так:

nginx ALL=(ALL) NOPASSWD: ALL. #(так только для теста)
Defaults:nginx !requiretty

NGinx и php-fpm даже запускались с рутовыми правами, но и это не помогло.

auditd пишет:

type=USER_CHAUTHTOK msg=audit(1627163840.500:550651): pid=21840 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='op=PAM:chauthtok grantors=? acct="username" exe="/usr/sbin/chpasswd" hostname=? addr=? terminal=? res=failed



Буду благодарен любой подсказке!

 , ,

kbu ()

Настройка nginx

Приветствую,

Кто-нить прокидывал через nginx ceph хранилище, чтобы через браузер он отдавал файлы в расширениях? В данным момент он возвращает поток иероглифов в браузере, а не файл, трабла с кодировкой?

location /wap-outer/Equipments {
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, >>OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-
        Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,X-CSRF-TOKEN,X-Captcha';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
        return 204;
    }
    add_header 'Access-Control-Allow-Origin' "$http_origin";
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, >>OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,X-CSRF-TOKEN,X-Captcha';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range,X-Captcha';
    rewrite /wap-outer/attachment/(.*) /ceph-wrapper/requests/attachment/$1   break;
    proxy_redirect   off;
    proxy_set_header Host          $host;
    proxy_pass http://192.168.1.10;

Заранее спасибо всем.

 , , ,

troy856 ()

Не могу отключить кэширование страницы в Wordpress

Всем, привет! Не могу отключить кэширование страницы в Wordpress. Я конфижу Nginx мой ключ кеша

fastcgi_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
fastcgi_cache_use_stale error timeout updating invalid_header http_500;

set $no_cache 0;

Задача: на некоторых страницах вырубить кэш. Делаю такое:

if ($request_uri ~* "/custom-order/|/complete-order/") {
set $no_cache 1;
}

Не работает. Что не так?

 , ,

Venus_Kanamo ()

проброс адреса через nginx

Доброго дня Всем,

Нужно пробросить адрес внешнего ресурса на внутреннем nginx. Есть ссылка до которого идёт в виде http://192.168.1.1:8080/request/attachment/Equipments/файл.jpg Файл прописан кириллицей есть возможность задать кодировку чтобы он сам парсил файлы другие? Или нужно будет ручками менять на латиницу сам файл.jpg и другие?

Заранее спасибо за ответ.

 , , ,

troy856 ()

openssl s_client получает неверный серт от Nginx

На серваках есть скрипт, который получает дату истечения сертов доменов для заббикса. Получение даты:

echo | openssl s_client -connect $SERVER:443 -servername $SERVER -tlsextdebug 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter

В nginx есть дефолтная секция для виртуальных хостов, для которых нет конфигов:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;
	server_name _;
	ssl_stapling off;
	ssl_stapling_verify off;
	ssl_certificate /etc/nginx/ssl/default.crt;
	ssl_certificate_key /etc/nginx/ssl/default.key;
	deny all;
}

На некоторых серваках и не на всех доменах вместо получения серта нужного виртуального хоста берется самоподписанный серт из этой секции, а не из конфига хоста. А если чекнуть серт того же домена с другого сервака, то все ок. С чем связано и как можно пофиксить?

 ,

zevilz ()

Почему для fastcgi_pass: 127.0.0.1:9000 работает, а localhost:9000 нет?

Всем привет! Может мне кто-нибудь объяснит, я пока всю голову сломал?
Собрал я значицца в кубере (minikube) мультиконтейнерный под (т.е. один под в котором два контейнера в связке: nginx+php).
В конфиге nginx, там где про РНР, вот так работает:
fastcgi_pass 127.0.0.1:9000;

а вот так контейнер с nginx падает (пишет: php_upstream не работает типа):
fastcgi_pass localhost:9000;

вот так - тоже падает кстати (название контейнера само собой php):
fastcgi_pass php:9000;

Гляжу в /etc/resolv.conf: в обоих контейнерах прописано: 127.0.0.1 localhost

ниче не пойму, загадка дыры какая-то.
в docker-compose помню попроще было, там просто имя сервиса подставляешь: php:9000
Может кто-то натолкнет мысль, куда еще покурить?
Хочется разобраться в этих хитросплетениях.

Всем спасибо!

 , , ,

kwasar ()