Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Nginx

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

Fafnir777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NGINX + spawn-fcgi + PHP 5.2.6
 
NGINX отдает только sitename.com/script.php
 
При создании подкаталога, например вида sitename.com/subdir/script.php, выбрасывает 404.
 
Конфиг
*******************************************
user www;
worker_processes 2;
 
pid /var/run/nginx.pid;
error_log /var/log/nginx-error.log warn;
 
events {
  worker_connections 1024;
  use kqueue;
}
 
http {
  include mime.types;
  default_type application/octet-stream;
 
  # log options
  log_format main '$remote_addr - $remote_user [$time_local] '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$gzip_ratio"';
 
  # nginx options
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  server_tokens off;
 
 
 # fastcgi
  fastcgi_intercept_errors on;
 
  server {
  listen 80;
 
  server_name localhost;
 
  access_log /var/log/nginx.log main;
  location ~* ^.+\.(php)$ {
  fastcgi_pass 127.0.0.1:1026;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
  include fastcgi_params;
  }
 
  location / {
  root /usr/local/www/mydomain;
  index index.php index.html index.htm;
  }
  }
 
server {
  listen 80;
 
  server_name sitename.com www.sitename.com;
 
  access_log /var/log/nginx.log main;
  location ~* ^.+\.(php)$ {
  fastcgi_pass 127.0.0.1:1026;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /usr/local/www/sitename.com$fastcgi_script_name;
  include fastcgi_params;
  }
 
  location / {
  root /usr/local/www/sitename.com;
  index index.php index.html index.htm;
  }
  }
}

Всего записей: 9 | Зарегистр. 08-02-2005 | Отправлено: 00:49 14-10-2008
Ruza



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Сначала, на сервере с Nginx, установил конфиг без SSL/
Установил на сервере с апачем Letsencrypt, выпустил сертификат для домена.  
А затем, на сервере с Nginx, поставил конфиг с SSL и все взлетело

А зачем такие сложности? Достаточно не проверять сертификат на апаче...

----------
Fools rush in where angels fear to tread.

Всего записей: 5472 | Зарегистр. 10-09-2003 | Отправлено: 22:51 17-01-2020
ginger



Рыжик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, друзья!
 
Имеется сервер Nginx, для статического контента, не так давно стали замечать, что в журнале сервера имеются запросы типа GET к сторонним внешним ресурсам, чего по логике вещей быть не должно.
Просьба дать совет в решении данной проблемы, спасибо.
 
Журнал:
 
Файл конфигурации:

----------
Кто людям помогает, тот тратит время зря... Хорошими делами прославиться нельзя...

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 10:41 20-01-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ginger
Я обычно практикую размещение следующего конфига рядом с основными, что исключает попадание в логи любых запросов не относящихся к явно объявленным виртуальным хостам.
Сам конфиг default.conf:

Код:
server {
  listen 0.0.0.0:443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;
  listen 0.0.0.0:80 default_server;
  listen [::]:80 default_server;
  server_name _ ;
  ssl_certificate /var/www/certs/localhost.crt;
  ssl_certificate_key /var/www/certs/localhost.key;
  return 444;
}

 
Серт использую самоподписанный, чтоб прикрыть этой заглушкой в том числе https.
Всех, кто пришел в попытке пощупать айпишник, шлем лесом.

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 16:16 20-01-2020
Ruza



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ginger

Цитата:
чего по логике вещей быть не должно.  

 
У тебя есть параметр   listen 8081 default_server reuseport;  
Та к вот этот default_server и принимает этот мусор.  
Сделай дополнительный сервер как написал karavan и убери этот параметр из конфига данного сервера.


----------
Fools rush in where angels fear to tread.

Всего записей: 5472 | Зарегистр. 10-09-2003 | Отправлено: 19:49 20-01-2020
ginger



Рыжик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karavan
Ruza
Спасибо.

----------
Кто людям помогает, тот тратит время зря... Хорошими делами прославиться нельзя...

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 10:35 21-01-2020
Artezys



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не как не могу разобраться с nginx.config для реверс прокси. У меня WSUS к интернету недоступный, по тому поставил нгикс чтобы через него wsus достиг интернет, но никак не пойму как конфиг файл поправить.
 
Мог бы кто помочь с етой конфигурации  

Всего записей: 134 | Зарегистр. 17-02-2017 | Отправлено: 16:57 18-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artezys

Цитата:
У меня WSUS к интернету недоступный, по тому поставил нгикс чтобы через него wsus достиг интернет, но никак не пойму как конфиг файл поправить.

реверс, обычно, внутрь сети. а вы хотите чтобы изнутри кидало на определенный сервер при обращении на локальный nginx сервер? не удобнее ли Squid для этого?

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 07:01 23-03-2020
BlackLabel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день , кто-нибудь сможет переделать всю эту канитель в нормальный  MAP  
 
Код:
 
location ~ \.(nup|ver)$ {
 
        if ($http_user_agent ~ "^.*(EEA|EES|EFSW)+\s+Update.*BPC\s+(\d+)\..*"){
                set $ver $2;
        }
        if ($ver ~ '^[7-8]+$') {
                rewrite ^/update.ver$ /eset_upd/ep$ver/dll/update.ver break;
                rewrite ^/dll/update.ver$ /eset_upd/ep$ver/dll/update.ver break;
        }
        if ($ver ~ '^[6]+$') {
                rewrite ^/update.ver$ /eset_upd/ep6/update.ver break;
                rewrite ^/eset_upd/update.ver$ /eset_upd/ep6/update.ver break;
        }
        if ($http_user_agent ~ "^.*Update.*BPC\s+(\d+)\..*$"){
                set $ver $1;
        }
        if ($ver ~ '^(5|9)+$') {
                rewrite ^/update.ver$ /eset_upd/v$ver/update.ver break;
                rewrite ^/eset_upd/update.ver$ /eset_upd/v$ver/update.ver break;
        }
        if ($ver ~ '^[3-8]+$') {
                rewrite ^/update.ver$ /eset_upd/v3/update.ver break;
                rewrite ^/eset_upd/update.ver$ /eset_upd/v3/update.ver break;
        }
        if ($ver ~ "^1[0-1]+$"){
                rewrite ^/update.ver$ /eset_upd/v10/dll/update.ver break;
                rewrite ^/eset_upd/update.ver$ /eset_upd/v10/dll/update.ver break;
        }
        if ($ver ~ "^1[2-9]+$"){
                rewrite ^/update.ver$ /eset_upd/v$ver/dll/update.ver break;
                rewrite ^/eset_upd/update.ver$ /eset_upd/v$ver/dll/update.ver break;
        }
  }
 

Всего записей: 1026 | Зарегистр. 14-04-2004 | Отправлено: 10:38 10-12-2020
ginger



Рыжик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BlackLabel
Для создания зеркала я использовала ESET Mirror Tools, который создал несколько каталогов по указанному пути:
путь_к_каталогу/eset_upd/{ep6;ep7;era6;v4;v5}
Т.к. в основном используется нами ESET Endpoint Antivirus 5.xxx то в Nginx, прописала следующее:

Код:
 
map $http_user_agent $root {
    ~^((ERA|ESMC)\ Update.*BPC\ ([6-7]+)) /var/www/esetmirror/eset_upd/era6;
    ~^((EEA|EES|EFSW)\ Update.*BPC\ 6) /var/www/esetmirror/eset_upd/ep6;
    ~^((EEA|EES|EFSW)\ Update.*BPC\ ([7-8]+)) /var/www/esetmirror/eset_upd/ep7;
    ~^(.*Update.*BPC\ (?<version>\d+)) /var/www/esetmirror/eset_upd/v$version;
    default /var/www/esetmirror/eset_upd/v5;
}
 
server {
    access_log /var/log/nginx/esetmirror-access.log main buffer=1m flush=10s;
    error_log /var/log/nginx/esetmirror-error.log error;
    listen 2221 reuseport;
    root $root;
    server_name ИМЯ_СЕРВЕРА;
    index index.html;
    auth_basic "ESET Update site";
    auth_basic_user_file /var/www/.htpasswd;
 
 
    location ~* (?:^|/)\. {
      deny all;
    }
 
    location ~* \.ver$ {
      types {} default_type text/plain;
      add_header Cache-Control "must-revalidate" always;
      expires 0;
    }
 
    location / {
         limit_except GET HEAD {
            deny all;
         }
    }
}
 

Для проверки правильности написания MAP, я использовала curl, с различными комбинациями User-Agent и URL:
curl -v -H "User-Agent:ESS Update (Windows; U; 32bit; BPC 5.0.2272.7)" -u "ЛОГИН:ПАРОЛЬ" -I http://ИМЯ_СЕРВЕРА:2221/update.ver
curl -v -H "User-Agent:ERA Update (Windows; U; 32bit; BPC 6.0.2272.7)" -u "ЛОГИН:ПАРОЛЬ" -I http://ИМЯ_СЕРВЕРА:2221/update.ver
Не претендую на идеальное решение, однако работает, буду рада увидеть более изящный вариант.

----------
Кто людям помогает, тот тратит время зря... Хорошими делами прославиться нельзя...

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 13:30 10-12-2020
BlackLabel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ginger
Спасибо конечно , но есть конкретная задача ..  
 
И вроде как получилось, пока  тестирую.  

Код:
map $http_user_agent $ver0 {
        "~^.*(EEA|EES|EFSW)+\s+Update.*BPC\s+(\d+)\..*$" $2;
}
map $http_user_agent $ver1 {
        "~^.*Update.*BPC\s+(\d+)\..*$" $1;
}


Код:
location ~ \.(nup|ver)$ {
 
        if ($ver0 ~ '^[7-8]+$')  { rewrite ^/(dll/)?update.ver$ /eset_upd/ep$ver0/dll/update.ver break; }
        if ($ver0 ~ '^[6]+$')    { rewrite ^/update.ver$ /eset_upd/ep$ver0/update.ver break; }
        if ($ver1 ~ '^(5|9)+$')  { rewrite ^/update.ver$ /eset_upd/v$ver1/update.ver break; }
        if ($ver1 ~ '^[3-8]+$')  { rewrite ^/update.ver$ /eset_upd/v3/update.ver break;}
        if ($ver1 ~ "^1[0-1]+$") { rewrite ^/(dll/)?update.ver$ /eset_upd/v10/dll/update.ver break; }
        if ($ver1 ~ "^1[2-9]+$") { rewrite ^/(dll/)?update.ver$ /eset_upd/v$ver1/dll/update.ver break; }
        }
         

Всего записей: 1026 | Зарегистр. 14-04-2004 | Отправлено: 09:41 16-12-2020 | Исправлено: BlackLabel, 15:24 16-12-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BlackLabel
не проще как нить так?

Цитата:
map $http_user_agent $ver {
   "~^.*(EEA|EES|EFSW)+\s+Update.*BPC\s+(\d+)\..*$" "ep$2";
   "~^.*Update.*BPC\s+(\d+)\..*$" "v$1";
}

либо так, либо в обратном порядке (зависит от того, заканчивает ли Nginx проверять после первого совпадения).
ну и добавить уже просто в условия начало строки.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 11:43 16-12-2020 | Исправлено: Mavrikii, 11:45 16-12-2020
BlackLabel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
Я только за если будет проще на сколько это возможно ))  
 
Спасибо за подказку ...

Всего записей: 1026 | Зарегистр. 14-04-2004 | Отправлено: 15:18 16-12-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BlackLabel

Цитата:
если будет проще

и первые две строки возможно записать как одну (не проверял).
используя backreference к (dll/)?
if ($ver0 ~ '^[6-8]$')  { rewrite ^/(dll/)?update.ver$ /eset_upd/ep$ver0/$1update.ver break; }
плюс там, кстати, везде не нужен, если всего одна цифра в версии определяется регуляркой

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 21:12 16-12-2020
BlackLabel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii Спасибо  
 
Думаю так нормально ...  если ничего уже не укоротить то так и оставлю  
 
 

Код:
location ~* \.ver$ {
        if ($ver ~ '^[7-8]$')  { rewrite ^(.*) /eset_upd/ep$ver/dll/update.ver break; }
        if ($ver ~ '^[6]$')    { rewrite ^(.*) /eset_upd/ep$ver/update.ver break; }
        if ($ver ~ '^(5|9)$')  { rewrite ^(.*) /eset_upd/v$ver/update.ver break; }
        if ($ver ~ '^[3-8]$')  { rewrite ^(.*) /eset_upd/v3/update.ver break;}
        if ($ver ~ "^1[0-1]$") { rewrite ^(.*) /eset_upd/v10/dll/update.ver break; }
        if ($ver ~ "^1[2-9]$") { rewrite ^(.*) /eset_upd/v$ver/dll/update.ver break; }
        }

Всего записей: 1026 | Зарегистр. 14-04-2004 | Отправлено: 21:34 16-12-2020 | Исправлено: BlackLabel, 22:02 16-12-2020
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karavan
 

Цитата:
Сам конфиг default.conf:
 
Код:
server {
  listen 0.0.0.0:443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;
  listen 0.0.0.0:80 default_server;
  listen [::]:80 default_server;
  server_name _ ;
  ssl_certificate /var/www/certs/localhost.crt;
  ssl_certificate_key /var/www/certs/localhost.key;
  return 444;
}  

 
Тут можно рассмотреть 2 момента:
1.
Код:
server_name _ ;

В документации указанно, что данное значение является одним из множества значений. Для случаев когда мы хотим обрабатывать весь остальной трафик, то значение данной директивы стоит установить пустым:
Код:
server_name "" ;

Так как оно пусто по умолчанию, то его можно и не указывать.
 
2. Начиная с версии Nginx 1.19.4 появилась директива 'ssl_reject_handshake'
Как результат, блок для обработки всех неопределённых запросов может выглядеть приблизительно так:

Код:
 
server {
  listen 443 ssl http2 default_server;
  listen 80 default_server;
  ssl_reject_handshake on;
}

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 23:01 16-12-2020 | Исправлено: slech, 15:06 05-06-2021
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
slech
Цитата:
Начиная с версии Nginx 1.19.4  

Пока упомянутая версия не до всех доехала, того же эффекта, но на стороне клиента, можно добиться строчкой:
ssl_ciphers none;
Большинство ботов отвалят.
 
 

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 23:39 16-12-2020
BlackLabel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
del

Всего записей: 1026 | Зарегистр. 14-04-2004 | Отправлено: 12:07 18-12-2020 | Исправлено: BlackLabel, 12:48 18-12-2020
OOD

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите можно ли на Nginx без default_server ?
Например есть необходимость работы нескольких доменов на одном реал айпи и нужно быть без default_server.....

Всего записей: 3378 | Зарегистр. 20-05-2006 | Отправлено: 15:07 04-06-2021
vertex4

Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OOD
nginx обрабатывает всё. Поэтому правильнее поставить на default какой-нить отлуп типа 404 error, а уже нужные домены - нормальные сайты.
PS: если я правильно тебя понял...

Всего записей: 10393 | Зарегистр. 29-01-2006 | Отправлено: 15:47 04-06-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOD

Цитата:
можно ли на Nginx без default_server

можно, если его не будет - в случае ненахождения будет выдан первый из конфига
 
https://nginx.org/ru/docs/http/request_processing.html

Цитата:
В вышеприведённой конфигурации сервером по умолчанию будет первый сервер, что соответствует стандартному поведению nginx по умолчанию.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 09:30 05-06-2021 | Исправлено: Mavrikii, 09:34 05-06-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Nginx


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru