LINUX.ORG.RU

75
Всего сообщений: 1061

Попытка завести 0x0.

Добра, пни.

Есть такая замечательная файлопомойка, как https://0x0.st. Она свободная и мне бы хотелось поднять её экземпляр у себя. Однако, автор, видимо, принципиально отказывается давать документацию и агрессивно посылает на RTFM. Я и пошёл:

[oxo@MLE ~]$ cat /etc/uwsgi/0x0.ini 
[uwsgi]
socket = /tmp/0x0.socket
uid = oxo
gid = oxo
workers = 1
chmod-socket = 666
single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true
virtualenv = /home/oxo/0x0/penv/
pythonpath = /home/oxo/0x0/
chdir = /home/oxo/0x0/
wsgi-file = /home/oxo/0x0/fhost.py
callable = app
logger = file:/tmp/0x0.log
(Немного поправленный конфиг от поднятого рядом Searx.)
[oxo@MLE ~]$ file /tmp/0x0.socket
/tmp/0x0.socket: socket
server {
                listen 443 ssl http2;
                server_name wasteland.mle.party;
                location / {
                        include uwsgi_params;
                        uwsgi_pass unix:/tmp/0x0.socket;
                        internal;
                        proxy_set_header X-Forwarded-For $remote_addr;
                }
        }
Сокет создаётся, в логах ни на что не жалуется, но nginx отдаёт 404 при запросе к домену. ЧЯДНТ?

 , ,

commagray ()

nginx и docker

Добрый день. Есть несколько docker контейнеров с nginx. нужно продвязать к каждому контейнеру свой домен на одном ip. Я установил локально nginx на машину где установлены контейнеры и пытаюсь пробросить виртуальные домен на nginx контейнеров. proxy_pass http:@@@:8080; proxy_set_header X-Real-IP $remote_addr; Так это не работает

 , ,

letema88 ()

Проблема с работой web-приложения через nginx reverse proxy

Всем привет! Развернул на отдельной виртуалке processmaker (php+mysql+apache2) прилажуха работает все ок. На отдельной виртуалке стоит nginx через который прокинут processmaker в интернет, на домен. Прилага работает и все вроде как хорошо, но заходишь на страницу с схемами прцоессов и она бессконечно загружается. Помогите пж как то подправить nginx для работы с processmaker.

Текущий nginx config

upstream bp {
   server 192.168.252.19:80;
   keepalive 32;
}
server {
    server_name  bp.site.by;
    listen  80;
    listen  [::]:80;

   if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }
}
server {

    server_name  bp.site.by;
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;

    ssl on;
    ssl_certificate /etc/nginx/certs/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/certs/site.by.key;
    ssl_dhparam  /etc/nginx/dhparam.pem;
    ssl_ciphers     EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_ecdh_curve  secp384r1; # Requires nginx >= 1.1.0
    ssl_protocols   TLSv1.2;

    ssl_prefer_server_ciphers  on;
    ssl_session_cache          shared:SSL:10m;
    ssl_session_tickets        off; # Requires nginx >= 1.5.9
    ssl_stapling               on; # Requires nginx >= 1.3.7
    ssl_stapling_verify        on; # Requires nginx >= 1.3.7


    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; prelo$

    resolver          8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout  5s;

    location / {
      proxy_pass http://bp;
      proxy_set_header Host $http_host;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header X-Real-IP $remote_addr;
      client_max_body_size    10m;
      client_body_buffer_size 128k;
  }
}

Конфиг apache processmaker

/sites-available/pmos.conf                        

        <VirtualHost 192.168.252.19:80 >
                ServerName "127.0.0.1"
                DocumentRoot /opt/processmaker/workflow/public_html
                DirectoryIndex index.html index.php

               <Directory /opt/processmaker/workflow/public_html>
                    Options Indexes FollowSymLinks MultiViews
                    AddDefaultCharset UTF-8
                    AllowOverride None
                    Require all granted
                    ExpiresActive On
                   <IfModule mod_rewrite.c>
                         RewriteEngine On
                         RewriteCond %{REQUEST_FILENAME} !-f
                         RewriteRule ^.*/(.*)$ app.php [QSA,L,NC]
                   </IfModule>
                  #Deflate filter is optional. It reduces download size, but adds slightly more CP$
                  AddOutputFilterByType DEFLATE text/html
             </Directory>
        </VirtualHost>

Ошибка на этой странице из режима разработчика firefox

[Show/hide message details.] NetworkError: A network error occurred. mafe-583402f-a44fbc3.js:1274
RestClient.prototype.consume
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1274:11881
RestClient.prototype.postCall
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1274:9172
RestProxy.prototype.post
https://site.by/lib/js/mafe-583402f-a44fbc3.js:30969:13
PMRestClient.prototype.post
https://site.by/lib/js/mafe-583402f-a44fbc3.js:80175:5
PMRestClient.prototype.executeRestClient
https://site.by/lib/js/mafe-583402f-a44fbc3.js:80125:13
<anonymous>
https://site.by/lib/js/mafe-583402f-a44fbc3.js:98164:18
c
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1111:26031
fireWith
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1111:26840
ready
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1111:3303
q
https://site.by/lib/js/mafe-583402f-a44fbc3.js:1111:715

 , , ,

Flover ()

Несколько версий PHP на одном сервере

Здравствуйте!
Имеется DEBIAN 9, куда установлено несколько версий PHP вот по этом у ману
https://freshnotes.org/2018/02/ustanovka-php-5-6-7-0-7-1-7-2-odnovremenno-v-d...
Подскажите пожалуйста, как надо настроить NGINX, чтобы одновременно на одном серваке работали разные сайты (виртуальные хосты) на разном PHP?
Вот здесь есть решение
https://pehapkari.cz/blog/2017/03/27/multiple-php-versions-the-easy-way/
но меня интересует решение без php-fpm

 , ,

rafaello ()

nginx cors Access-Control-Allow-Origin

тестируем мобильную версию сайта - m.example.com и есть домен hhh.example.com откуда берутся разные данные, все домены мои

настроил cors для hhh.example.com

if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' 'm.example.com';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;

        return 204;
}

if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' 'm.example.com';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}

if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' 'm.example.com';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}

смотрю через мозилу и хром

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://hhh.example.com/api/. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘m.example.com’).[Подробнее]
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://hhh.example.com/api/. (Причина: не удалось выполнить запрос CORS)
Failed to load http://hhh.example.com/device: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains the invalid value 'm.example.com'. Origin 'http://m.example.com' is therefore not allowed access. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

смотрю через просмотр кода на странице

URL запроса: http://hhh.example.com/api/
Метод запроса: OPTIONS
Удалённый адрес: IP
Код состояния: 204
Версия: HTTP/1.1
	
Access-Control-Allow-Credentials true
Access-Control-Allow-Headers DNT,X-Mx-ReqToken,Keep-Alive,U…ce,Cache-Control,Content-Type
Access-Control-Allow-Methods	
GET, POST, OPTIONS
Access-Control-Allow-Origin m.example.com
...

видно что cors работает, но почему браузеры ругаются?

 , ,

Garcia ()

Закрыть доступ к определенным dot-файлам на apache2/nginx

Добрый, коллеги!

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

  • Блокировать все директории популярных SCM (.git/ .hg/ .svn/ .bzr/ .cvs/)
  • Блокировать файлы популярных SCM (.gitignore .hgignore, что-то еще?)
  • Блокировать ht-файлы (.htaccess .htpasswd)
  • Блокировать любые файлы с разрешениями *.sql и *.sql.* (например, file.sql.gz)

Сейчас использую такие правила:

Apache2:

# Deny access to SQL and SCM dot-files:
# .hgignore .gitignore .htaccess .htpasswd *.sql *.sql.*
<FilesMatch "\.(hgignore|gitignore|ht(access|passwd))\Z|.*\.sql\Z|.*\.sql\..+\Z">
  deny from all
</FilesMatch>

# Deny access to SCM dot-directories:
# .git .hg .svn .bzr .cvs
<DirectoryMatch "\.(git|hg|svn|bzr|cvs)(/)?\Z">
  deny from all
</DirectoryMatch>

Nginx:

# Deny access to SQL and SCM dot-files:
# .gitignore .hgignore .htaccess .htpasswd *.sql *.sql.*
location ~* (\.(hgignore|gitignore|ht(access|passwd))$|(\.sql)$|(\.sql\..+)$)
{
  deny all;
}

# Deny access to SCM dot-directories:
# .git .hg .svn .bzr .cvs
location ~* \.(git|hg|svn|bzr|cvs)[/]?.*$
{
  deny all;
}

Основной вопрос: Как правильно это сделать? Сейчас сталкиваюсь с тем что с разными CMS и настройками веб-срверов иногда по разному работают.

  • Какие директивы и в каком месте (начало или конец конфига) лучше использовать, и почему?
  • Что лучше использовать (и надо ли) для обозначения начала и конца URL-запроса? На разных конфигурациях ^, $ и \Z по разному себя вели.
  • Как правильнее указать опциональный слеш в конце имен директорий, и надо ли вообще его указывать - (/)? или [/]? ?

    Извиняюсь, ни в регулярках, ни в настройках apache\nginx экспертом не являюсь. Доки читал, но но хочу услышать мнение коллег. Спасибо!

 , , ,

skyman ()

Проблемы с потреблением RES памяти

Здравствуйте.

Есть около 10 серверов, на части установлена CloudLinux 6 (это OS на базе CentOS 6), на части CentOS 6. Столкнулся с проблемой выделения и освобождения памяти.

Изначально заметил, что серверы MySQL (стоят версии MariaDB 10.2.17 и Percona 5.6.39 в зависимости от сервера) потребляют больше памяти, чем им выделено. Например, mysqltuner.pl может иметь следующий вывод (это тестовый сервер, буферы установлены на минимум):

-------- Storage Engine Statistics --------------------------------------- --------------------------
[-] Data in MyISAM tables: 284.6M (Tables: 8400)
[-] Data in InnoDB tables: 2.1G (Tables: 9416)
[-] Data in MEMORY tables: 0B (Tables: 62)
-------- Performance Metrics ---------------------------------------- -------------------------------
[-] Up for: 2m 34s (7K q [47.175 qps], 696 conn, TX: 23M, RX: 18M)
[-] Physical Memory: 7.7G
[-] Max MySQL memory: 562.8M
[-] Other process memory: 2.2G
[-] Total buffers: 184.0M global + 2.9M per thread (100 max threads)

А сервер базы данных может при этом съесть 2 гигабайта (именно RES, не VIRT памяти) спустя пару дней работы (либо можно просто запустить mysqltuner.pl несколько раз и обычно потребление уже выше заданного лимита). flush tables, caches не освобождают память.

Есть два решения данной проблемы - это установка MALLOC_ARENA_MAX в значение от 1 до 4 (изначально данное значение для сервера с 8 ядрами имеет значение 64), в данной ситуации MySQL начинает потреблять память корректно. Также можно ставить malloc_check_=3 (тоже помогает, данная переменная переводит glibc в старый режим работы с потоками). В системах стоит glibc 2.12.2 версии, зачем-то RHEL собирают его с параметром --enable-experimental-malloc, который и создает данные проблемы (изменение malloc_check_ как раз отключает данный режим). Второе решение, использование jemalloc (прописывается malloc-lib файла my.cnf).

В сети находил подобные проблемы, но часто там описывается неконтролируемый рост VIRT памяти на glibc 2.12, но никак не RES. Единственная похожая запись проблемы есть здесь https://jira.mariadb.org/browse/MDEV-15344, а также находил на сайте bugs.mysql.com, но ссылку не сохранил. Если смотреть pmap -x, то видно много выделенных anon блоков по 10 и 64 мб. Интересный момент еще в том, что при запуске сервера через утилиту valgrind --leak-check=full --leak-resolution=med потребление памяти нормальное.

Данная проблема не только с сервером базы данных, интересный момент есть и с веб сервером nginx. При запуске он потребляет 1.4 гигабайта (RES) памяти, если выполнить мягкую перезагрузку (graceful), то после «перерождения» процессов новые начинают потреблять 3 гигабайта (RES) памяти.

Для диагностики я установил два новых сервера с идентичным объемом ресурсов и операционными системами, скопировал серверы базы данных и веб сервера, проблему воспроизвести не удалось. Я стал сравнивать все параметры sysctl, ядра, различий не было. Сделал проверку файлов всех пакетов через rpm-Va, а после и вовсе сделал yum reinstall * (что переустановило все пакеты), но проблема не исчезла на тестовом сервере и не появилась на двух специально установленных серверах. Пробовал отказывать и обновлять glibc, результата также нет.

Что это может быть, куда копать? Почему одно и тоже программное обеспечение ведет себя по разному?

 , , , ,

Yoh ()

Проксирование nginx

Здравствуйте. Не могли бы помочь мне понять как работает proxy_pass

Например есть конфиг

location ~ ^/tv$ {resolver 8.8.8.8; proxy_pass http://url.com:port/tv;}

У меня всё не как не получилась запустить трансляцию тв на сайте с https, вот так получилось, но не пойму как это работает.. Пользователя перекидывает по ссылке, или сервер всю трансляцию качает и отправляет пользователю? а если одновременно несколько вкладок открыть, то сервер одно и тоже как 2 файла качает и отправляет или качает как 1 файл и отправляет на 2 вкладки? не пойму :(

 , ,

jessgt ()

nginx redirect на index.php

на апаче в htaccess

<IfModule mod_rewrite.c>                                                                                                                       
    RewriteEngine On                                                                                                                           
    RewriteCond %{REQUEST_FILENAME} !-f                                                                                                        
    RewriteCond %{REQUEST_FILENAME} !-d                                                                                                        
    RewriteRule ^(.*)$ /server/index.php?ACTION=$1 [NC,L,QSA]                                                                                  
</IfModule>

и полюбому запросу на http://example.com/server/123 отдается json

надо перевести на nginx+php-fpm, пробовал так

       location ~ ^/server(.*) {                                                                                                              
               if (!-e $request_filename) {                                                                                                   
                       rewrite ^(.*)$ /server/index.php?ACTION=$1 break;                                                                      
               }                                                                                                                              
       }

и так

location ~* ^/server(.*) {                                                                                                             
                fastcgi_index  index.php;                                                                                                      
                try_files $uri $uri/ /server/index.php?ACTION=$1;                                                                          
                fastcgi_pass   unix:/var/run/php-fpm.sock;                                                                
                fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;                                                           
                include        fastcgi_params;                                                                                                 
        }

но пока не работает

 , ,

Garcia ()

Не получается отдать файл через nginx

Добрый день, уважаемый All. Вроде всё просто, скрипт генерирует ссылки вида: «/download/1.pdf», «/download/2.pdf», «/download/etc.pdf» Реально они лежат по пути: /tmp/1.pdf, /tmp/2.pdf, /tmp/etc.pdf Нужно «отдать» готовую статику, сначала пытался так:

location ~ ^/download/.*\.pdf$ {
   root /domain.name/tmp/;
   add_header Content-Disposition "attachment";
   add_header Content-Type application/octet-stream;
}
Не получается, при запросе domain.name/download/1.pdf почему-то открывается главная. Попробовал вместо root написать alias:
location ~ ^/download/.*\.pdf$ {
   alias /domain.name/tmp/;
   add_header Content-Disposition "attachment";
   add_header Content-Type application/octet-stream;
}
- С тем же результатом.

Попробовал тупо в лоб:

location /download {
   root /domain.name/tmp/;
   add_header Content-Disposition "attachment";
   add_header Content-Type application/octet-stream;
}
- Тоже не отдаёт файл...

Как правильно составить конфиг-то?! ))

 

nk_lg ()

Подскажите решение для nginx

Подключил перевод урла в нижний регистр через Перл модуль по рецепту отсюда

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

if ($request_uri ~* ^/wp-admin/.+){
return $scheme://$host$old_uri?$args;
}

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

Я и так сегодня целый день подарил Wordpress'у :-D

Можно, конечно, поставить плагин, но, в конце концов, админ я локал_и_не_очень_хоста или нет?! ))

beastie

 , , ,

Twissel ()

ffmpeg + nginx rtpm настройка

как в nginx конф прописать чтобы вещались одновременно в три потока исходящих (справа 1 и 2 работают и так, а 3й не как не пойму)

https://pp.userapi.com/c844723/v844723097/cf34a/YiRr6rDnbAo.jpg

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

https://pp.userapi.com/c844723/v844723097/cf366/jaw7eSDZarw.jpg

я делал все по интрукциям, а тут появилась эта идея. Как чего куда вставлять не понимаю вообще)

 , , , ,

MakarkinPRO ()

nginx rtmp

Как я понял он не может, когда worker_processes > 1, но в этом режиме 1 ядро грузит на 100% при конектах > 1000. Кто сталкивался скажите какие есть решения

 ,

gobot ()

Реализация логики на nginx(plus?) вместо создания бэкенд-служб

Привет!

Вопрос про реализации логики на nginx(plus?) вместо создания бэкенд-служб.

Есть след задача. На вход на nginx поступает post запрос с json-body вида post https://frontend/api/task/[procId]/GetData

Нужно по этому запросу выполнить два шага. Первый шаг сформировать get запрос вида https://backend1/gettask?process=[procId] (где значение [procId] взято из основного запроса). Далее распарсить полученный json вида ‘[{“taskid”: “aa1-aa2”, “descry”: “some info”, …}]’, извлечь значение tasked. Второй шаг послать post на to https://backend2/[taskId]/GetData где taskId взято из json-ответа на первый запрос, а json-body полностью из json-body первичного post запроса. Результат вернуть как ответ на первичный запрос.

 ,

serg_new ()

двойной прокси nginx

всем привет.

подскажите плиз.

как через двойной прокси передать реальный ip пользователя.
через один прокси nginx доходит без проблем до бэкенда,
через два нет

сейчас выглядит команда вот так

proxy_set_header  X-Forwarded-For $remote_addr;
на втором проксе

как нужно прописать эту переменную на первом прокси и на втором nginx?

 

carter ()

naxsi & xenforro

Поделитесь пожалуйста правилами для naxsi и дефолтной инсталляции xenforo. а то что то по умолчанию он блокирует все (

 ,

yavimicita ()

nginx c non-www на www

Сразу прошу не пинать, поиском умею пользоваться, но разобраться в проблеме не хватает навыков.

Есть такой конфиг для домена.

server {
    	listen 80;
    	server_name domain.ru www.domain.ru;
    	rewrite ^(.*) https://www.domain.ru$1 permanent;
    	server_tokens off;

}

server {
    	listen 443 ssl;
	server_name domain.ru www.domain.ru;
root /var/www/domain.ru/html/;
	index index.php;
        #pagespeed off;

	ssl_certificate /etc/letsencrypt/live/domain.ru/fullchain.pem;
    	ssl_certificate_key /etc/letsencrypt/live/domain.ru/privkey.pem;

	pagespeed Disallow "*/checkout/*";

	include /etc/nginx/snippens/ssh.conf;
	include /etc/nginx/snippens/cache.conf;
	include /etc/nginx/snippens/wordpress.conf;
	include /etc/nginx/snippens/all.conf; 
        include /etc/nginx/snippens/pagespeed-for-hosts.conf;
}
Конфиг wp
location / {
    try_files $uri $uri/ /index.php?$args;

    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    location ~* ^/wp-content/uploads/.+\.php$ { internal; }
    location = /wp-config.php { internal; }
    location = /readme.txt { internal; }
    location = /install.php { internal; }
    location = /wp-includes { internal; }
}

В настройках самого wp перенаправление на https://www.domain установлено.

А с настройками сервера никак не могу разобраться, то 500 то «404 Not Found nginx/1.12.2» Подозреваю что нужно больше секций server, судя по инфо в сети, но как это организовать не пойму, пробовал разные варианты не получилось.

И внезапно, но сервер на Ubuntu.

 , , ,

nixbeast ()

Nginx. Редирект 404 на главную страницу

День добрый. Есть openresty. Необходим редирект с одного сайта на другой, такое настроил. Старые ссылки контекстные(конкретные) надо бы редиректить на главную страницу нового сайта, как такое сделать? Так не работает:

error_page 404 @foobar;

location @foobar { return 301 https://new-site; } }

 ,

genesys ()

nginx проверка клиентского заголовка

мне надо передать POST запрос с заголовком X-HHH : любое_значение

curl -v -i -H "X-HHH: image" -d "@test.txt" -X POST http://192.168.0.101/upload

и в nginx надо проверять этот заголовок X-HHH

я делаю конструкцию

if ($http_x_hhh ~* "X-HHH"){
...
}

но http_x_hhh проверяет не заголовок, а значение поля заголовка, т.е. любое_значение, а как мне проверять через if именно что есть заголовок X-HHH ?

 , ,

Garcia ()

статус апстримов nginx

всем привет

как можно узнать статус апстримов в nginx?

 

carter ()