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

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

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

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

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

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
Mavrikii

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

Цитата:
В общем надо настраивать ссл на нгинксе, а на апаче отключать, я так понимаю?

по желанию, на апаче можно и оставить.
но если хотите, чтобы nginx принимал и обрабатывал https (а не проброс портов на определенный IP адрес), то его нужно настраивать на работу с ssl

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 16:31 14-01-2025
alexnov66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fafnir777
попробуйте эту строку

Цитата:
location ~* ^.+\.(php)$ {

 
заменить на эту
location ~ \.php$ {
 
что то не понятная строка у вас
в полне возможно еще не правильно выставлены права на папки и файлы.

Всего записей: 1480 | Зарегистр. 29-08-2005 | Отправлено: 17:42 14-01-2025 | Исправлено: alexnov66, 17:48 14-01-2025
Mavrikii

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

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 17:43 14-01-2025
alexnov66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
на дату не глянул, а тогда почему тема всплыла на самый верх

Всего записей: 1480 | Зарегистр. 29-08-2005 | Отправлено: 17:49 14-01-2025
Mavrikii

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

Цитата:
а тогда почему тема всплыла на самый верх

не тема, а сообщение - это же шапка, отображается на каждой странице сверху, доступна для редактирования.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 17:51 14-01-2025
toadmr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VeniaminR
В конфиге впача настроить чтобы слушал 80 порт.
На Nginx, в конфиге в proxy_pass, поставить пересылку по http, Nginx сам все сделает дальше.

Всего записей: 49 | Зарегистр. 12-04-2023 | Отправлено: 08:57 15-01-2025
Mavrikii

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

Цитата:
В конфиге впача настроить чтобы слушал 80 порт.

человек не хочет открыто передавать данные, и правильно делает.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 03:35 16-01-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть задача сделать проксирование (nginx) на backend(https) с frontend(https) для авторизации в случае успешной авторизации на backend frontend проксирует на определенную страницу backend , в противном случае выдает 403 ошибку.
 
Мой конфиг
 
Подробнее... [?]
 
В логах такая ошибка
 Подробнее... [?]
Где мог ошибиться?

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 14:28 26-02-2025 | Исправлено: sfantom20, 14:44 26-02-2025
Mavrikii

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

Цитата:
В логах такая ошибка

https://nginx.org/ru/docs/http/ngx_http_auth_request_module.html

Цитата:
 предоставляет возможность авторизации клиента, основанной на результате подзапроса. Если подзапрос возвращает код ответа 2xx, доступ разрешается. Если 401 или 403 — доступ запрещается с соответствующим кодом ошибки. Любой другой код ответа, возвращаемый подзапросом, считается ошибкой.

браузер автоматически запрашивает иконку сайта, ее нет, ваш бэк возвращает 404, а фронт не знает что с этим делать.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 20:42 26-02-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сейчас такая ошибка
2025/02/27 11:32:24 [error] 48524#48524: *1 auth request unexpected status: 404 while sending to client, client: 172.27.224.1, server: frontend, request: "GET /myinfo HTTP/1.1", host: "frontend"
 
и не вижу обращений к бэкенду
Я так понимаю он на фронтенде ищет файл myinfo , вместо проксирования на бэкенд.

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 11:39 27-02-2025 | Исправлено: sfantom20, 11:48 27-02-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доработал конфиг
 Подробнее... [?]
 
Ошибок нет, но задача не работает. Буду признателен за любые рекомендации

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 16:17 27-02-2025 | Исправлено: sfantom20, 13:07 28-02-2025
Mavrikii

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

Цитата:
Ошибок нет, но задача не работает. Буду признателен за любые рекомендации

бэкенд обслуживается тем же nginx?
уберите internal у auth, сделайте напрямую запрос туда - что возвращается в заголовках, запрос до бэка доходит?

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 18:20 27-02-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Бэкэнд ослуживает другой nginx
 
Такие ошибки
на запрос к = /auth
2025/02/28 13:09:28 [error] 50299#50299: *1 "/usr/share/nginx/html/auth/index.html" is not found (2: No such file or directory), client: 172.27.224.1, server: frontend, request: "GET /auth/ HTTP/1.1", host: "frontend"
 
 
на запрос к /myinfo
2025/02/28 13:09:33 [error] 50299#50299: *1 auth request unexpected status: 404 while sending to client, client: 172.27.224.1, server: frontend, request: "GET /myinfo/ HTTP/1.1", host: "frontend"

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 13:16 28-02-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sfantom20
протестировал ваш конфиг.
 

Цитата:
на запрос к /myinfo

потому что подзапрос есть, вы смотрите access.log на бэке или error.log?
я поднял доп сервера на nginx на разных портах и если подзапрос к бэку выдает 404 (нет URL по proxy_pass https://backend/site1;), тогда на фронте ваше сообщение.
если указать proxy_pass https://backend/site1; на любой существущий файл, все работает без проблем.
 
для proxy_pass http://127.0.0.1:8080/site1/test.txt (когда файла нет)

Цитата:
2025/02/28 21:15:51 [error] 19540#25416: *8 CreateFile() "/nginx/html0/site1/test.txt" failed (2: The system cannot find the file specified), client: 127.0.0.1, server: , request: "GET /site1/test.txt HTTP/1.0", host: "127.0.0.1:8080"
2025/02/28 21:15:51 [error] 19540#25416: *1 auth request unexpected status: 404 while sending to client, client: 127.0.0.1, server: localhost, request: "GET /myinfo/test.txt HTTP/1.1", host: "localhost"

 
когда файл есть, никаких ошибок не вознкиает.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 05:19 01-03-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
порты на фронтэнд и бэкенд одинаковы это 443.  
По идее при обращении к frontend/myinfo должен пройзойти проксирование для авторизация на https://backend/site1 если авторизация успешна то проксирование на backend/myinfo  
 
А как работает upstream ? Он не должен перекидывать все запросы на бэкэнд?
Как работает auth_request ? Он должен переходить на location откуда на upstream для авторизации.  
 
ЛОги
2025/03/01 15:30:16 [error] 50604#50604: *9 auth request unexpected status: 404 while sending to client, client: 172.27.224.1, server: frondend, request: "GET /myinfo HTTP/1.1", host: "frondend"
 
172.27.224.1 - - [01/Mar/2025:15:30:16 +0300] "GET /myinfo HTTP/1.1" "GET /myinfo HTTP/1.1" 500 339 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "-""/myinfo" - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "-""Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "-"

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 15:33 01-03-2025 | Исправлено: sfantom20, 15:59 01-03-2025
Mavrikii

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

Цитата:
порты на фронтэнд и бэкенд одинаковы это 443.  

я просто запустил все на одном nginx, поэтому разные порты.
 

Цитата:
если авторизация успешна то проксирование на backend/myinfo

да, обращение идет к site1, и что бэкенд на него возвращает?
 
судя по всему, ваш бэкенд возвращает 404 на обращение к /site1
сказал же, посмотрите error.log на бэке.
 
ps: хотите больше подробностей - включите дебаг в логах.
error_log /var/log/nginx/error.log debug;
https://docs.nginx.com/nginx/admin-guide/monitoring/debugging/

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 00:08 02-03-2025 | Исправлено: Mavrikii, 08:39 02-03-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Включил debug
Подробнее... [?]
 
На бэкенд у меня нет доступа для чтения логов.
 На фронте самоподписаный от ssl на бэкенде от GlobalSign.

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 14:32 03-03-2025 | Исправлено: sfantom20, 15:52 03-03-2025
Mavrikii

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

Цитата:
 На фронте самоподписаный от ssl на бэкенде от GlobalSign.

не имеет отношения к проблеме.
 

Цитата:
На бэкенд у меня нет доступа для чтения логов.

очевидно, что он выдает 404, я вам сразу написал об этом.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 20:57 03-03-2025
sfantom20



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решилась проблема с 404 Ошибкой.
Надо было заголовок доменный бэкенда прокинуть  - proxy_set_header Host backend;
 
Конфиг
 
Подробнее... [?]
 
Теперь проблема что в /authorization не проходит а сразу на /myinfo переходит
 
Лог
Подробнее... [?]
 

Всего записей: 269 | Зарегистр. 15-12-2004 | Отправлено: 15:10 04-03-2025
Mavrikii

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

Цитата:
Теперь проблема что в /authorization не проходит а сразу на /myinfo переходит

почему не проходит?
 
делается запрос к бэку

Цитата:
2025/03/04 14:09:48 [debug] 54635#54635: *1 http proxy header:
"GET /authorization/ HTTP/1.0

получается от него ответ

Цитата:
2025/03/04 14:09:51 [debug] 54635#54635: *1 http proxy status 200 "200 OK"

раз 200, то авторизован и запрос проходит далее
 
я же цитировал
https://nginx.org/ru/docs/http/ngx_http_auth_request_module.html

Цитата:
Если подзапрос возвращает код ответа 2xx, доступ разрешается. Если 401 или 403 — доступ запрещается с соответствующим кодом ошибки. Любой другой код ответа, возвращаемый подзапросом, считается ошибкой.
 
При ошибке 401 клиенту также передаётся заголовок “WWW-Authenticate” из ответа подзапроса.

Всего записей: 16017 | Зарегистр. 20-09-2014 | Отправлено: 19:39 04-03-2025 | Исправлено: Mavrikii, 20:01 04-03-2025
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru