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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xzibit87
тут конфиг смотрели?
https://ubuntu.tutorials24x7.com/blog/how-to-install-webmin-and-secure-with-nginx-on-ubuntu-20-04-lts

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 21:20 14-01-2023
xzibit87

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii, уже где только не смотрел конфиги. Вобщем сам пришел к тому, что в мой конфиг нужно было добавить строки для поддержки WebSocket (ну, по крайней мере, я это так понял):

Код:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";


Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 20:01 18-01-2023 | Исправлено: xzibit87, 20:02 18-01-2023
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Помогите, пожалуйста, настроить NGINX.
1. Вопрос по точной и правильной настройке.
  У меня реверс прокси отправляет запросы на 2 backend хоста, но...
  Условно представим, что это:
    mail.domain.ru
    srv1.domain.ru
    srv2.domain.ru
  Если в запросе фигурирует имя другого хоста (DNS имя связано с внешним IP-адресом, но пока не  
  опубликовано - mail.domain.ru), запросы идут на srv1.domain.ru.
  Подскажите, каким образом мне сделать, чтобы сервер отвечал что такого хоста нет?
 
2. Вопрос по передаче реального IP-адреса (без подмены на адрес revers proxy)
  Как я пониманию, надо добавить в конфиг сайта следующие строки:
    real_ip_header    X-Forwarded-For;
    real_ip_header    X-Real-IP;
    set_real_ip_from 192.168.105.1; - вот здесь не совсем понятно... Тут надо добавлять адрес самого  
      обратного прокси или вышестоящего шлюза? У меня шлюз все пакеты, приходящие на 80 и 443  
      сразу шлет на обратный прокси.

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 12:10 28-03-2023
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newhk
Цитата:
Подскажите, каким образом мне сделать, чтобы сервер отвечал что такого хоста нет?
Для этого есть дефолт. Сабж умеет сам быть хттп сервером.
Если обращение по айпи или несуществующему имени,
просто отдаешь статическую страницу с нужным бла-бла-бла.
 


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17273 | Зарегистр. 13-06-2007 | Отправлено: 17:34 28-03-2023
Mavrikii

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

Цитата:
Подскажите, каким образом мне сделать, чтобы сервер отвечал что такого хоста нет?

добавляете в прослушку порта default_server, как и сказали, или описываете как хотите свой первый.

Цитата:
Если вы не добавили параметр « default_server » ни к одному виртуальному серверу, первый сервер будет считаться сервером по умолчанию. Однако вы можете явно указать default_server следующим образом:
listen 80 default_server;

 
 

Цитата:
 Тут надо добавлять адрес самого  
      обратного прокси или вышестоящего шлюза?  

того, что передает в nginx реальный адрес в другом заголовке.
если вышестоящий шлюз присылает вам в заголовке X-Forwarded-For реальный IP, то вы используете его для замены и этим вы указываете, что от него приходят верные данные (иначе в любом запросе с подобным заголовков адрес будет заменен).
если у вас приходят пакеты с реальным IP на реверс, то вам нужно  

Цитата:
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

в доп заголовках передавать реальный IP. но и конечное приложение должно уметь работать с этим заголовками.
   
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 00:20 29-03-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, привет!
Помогите разобраться, пожалуйста.
 
Имею обратный прокси на NGINX.
За ним несколько web-ресурсов, один из них OWA.
 
Все рабоатет кроме OWA.
 
В конфиге OWA идет перенаправление на https://.....
сам nginx режет по 502 ошибке:
...
*2 peer closed connection in SSL handshake (104: Unknown error) while SSL handshaking to upstream, client: 1.2.3.4, server: owa2.domain.ru, request: "GET /favicon.ico HTTP/2.0", upstream: "https://192.168.105.210:443/favicon.ico", host: "owa2.domain.ru", referrer: "https://owa2.domain.ru/"
...
 
уже всю голову сломал...
 
если надо скину конфиги.

Всего записей: 20 | Зарегистр. 12-04-2023 | Отправлено: 14:35 27-04-2023
ginger



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

Цитата:
GET /favicon.ico HTTP/2.0

Добрый день! Предположу, что IIS не может обработать запрос HTTP/2.0, попробуйте для OWA изменить настройки Nginx и отдавать HTTP/1.1, ваш конфиг так же интересно посмотреть.

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

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 07:19 28-04-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее... [/more]
 
Добавлено:
Все, нашел как заставить NGINX отправлять запросы по HTTP/1.1, но это не помогло.
 

Код:
 
2023/04/28 15:46:55 [error] 2926#2926: *27 peer closed connection in SSL handshake (104: Unknown error) while SSL handshaking to upstream, client: 1.2.3.4, server: mail.domain.ru, request: "GET /favicon.ico HTTP/1.1", upstream: "https://192.168.105.210:443/favicon.ico", host: "mail.domain.ru", referrer: "https://mail.domain.ru/"
 

 
Добавлено:
Все так же пишет:
502 Bad Gateway [/more]

Всего записей: 20 | Зарегистр. 12-04-2023 | Отправлено: 09:42 28-04-2023 | Исправлено: toadmr, 15:48 28-04-2023
ginger



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

Цитата:
Все, нашел как заставить NGINX отправлять запросы по HTTP/1.1, но это не помогло

В вашем конфиге указан TLS1.3, а IIS поддерживает данную версию? Вы должны обеспечить идентичность поддерживаемых протоколов IIS и Nginx

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

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 07:23 04-05-2023
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
toadmr,
собственно, https лучше оставить только на жинксе,
а с проксируамыми им хостами общаться по. http


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17273 | Зарегистр. 13-06-2007 | Отправлено: 11:47 04-05-2023
toadmr

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

Цитата:
https лучше оставить только на жинксе

Если я устанавливаю директиву PROXY_PASS в http://....
 
В ответ возвращается 403 ошибка.
Это стандартное поведение чанги, если запросы должны идти по SSL.
 
Добавлено:

Цитата:
В вашем конфиге указан TLS1.3, а IIS поддерживает данную версию?

Прописал в конфиге Letsencrypt
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
 
В основном конфиге NGINX так же прописал:
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
 
Все равно не работает.
 
Все так же выдает 502 ошибку.

Всего записей: 20 | Зарегистр. 12-04-2023 | Отправлено: 13:59 04-05-2023 | Исправлено: toadmr, 15:21 04-05-2023
YuraseK

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто подскажет как можно сконфигурировать nginx так, чтобы по одному внешнему IP и на одном порту (443) первый сервер nginx принимал все запросы по SSL по одному доменному имени, например, site.com, а запросы по SSL на второе доменное имя sub.site.com перенаправлял по внутреннему адресу на другой nginx сервер?

Всего записей: 527 | Зарегистр. 12-12-2003 | Отправлено: 16:07 10-08-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тебе нужен обратный прокси (Reverse Proxy).
Конфиг для сайта "site.com" делаешь обычным, а конфиг для сайта "sub.site.com" настраиваешь с указанием внутреннего web-сервера.
Если на сервере стоит CERTBOT, то нужно будет доустановить (если еще нет) модуль "certbot-python-nginx", это сильно упростит жизнь
 
Типа так:

Код:
 
server {
        server_name sub.site.com;
        location /.well-known {
                root /var/www/html;
        }
        location / {
                proxy_pass http://192.168.105.222; # Здесь указываешь, как внутренний сервер должен принимать запросы (http или https)
                include proxy_params; # (есть в любой стандартной сборке NGINX - /etc/nginx/proxy_params)
        }
}
 

 
Потом выполняешь команду:  

Код:
certbot --nginx

выбираешь нужный домен и, если у тебя с DNS все нормально, получаешь модифицированный конфиг с SSL
Можно сначала проверить правильность настройки, типа так:

Код:
certbon --dry-run -d sub.site.com

 
Вообще, почитай про реверс прокси, например здесь

Всего записей: 20 | Зарегистр. 12-04-2023 | Отправлено: 10:07 11-08-2023 | Исправлено: toadmr, 10:16 11-08-2023
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ подскажите как сделать чтобы в адрес реверс прокси подставлялся порт ?
 
Емеем  
location / {
Proxy_pass http://192.168.10.51/;
 
порт прокси 8989 так вот если при подключении другой сети то получаем запросы вида http://site.hosting.ru и соответственно ничего кроме стартовой страницы не грузит, а как сделать чтобы запросы шли на http://site.hosting.ru:8989 ?

Всего записей: 1758 | Зарегистр. 15-03-2004 | Отправлено: 06:09 16-10-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TNR
это порт где? тот, что слушать должен nginx или того IP, что в proxy_pass?
если второе, то http://192.168.10.51:8989/
если nginx слушает, то для конфигруации server сделать listen 8989

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 06:22 16-10-2023
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
proxy_pass это адрес куда он мне проксирует я так понимаю ? и там порт 80 должен быть
я захожу на адрес localhost:8989 и мне открывает то что надо по адресу 192.168.10.51, но если глянуть в консоль то все дальнейшие запросы идут на адрес 192.168.10.51, а не localhost:8989

Всего записей: 1758 | Зарегистр. 15-03-2004 | Отправлено: 06:37 16-10-2023 | Исправлено: TNR, 06:40 16-10-2023
Mavrikii

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

Цитата:
я захожу на адрес localhost:8989 и мне открывает то что надо по адресу 192.168.10.51, но если глянуть в консоль то все дальнейшие запросы идут на адрес 192.168.10.51, а не localhost:8989

ну так у вас и удаленный хост должен возвращать результаты с localhost.
 
если у вас там сервер, и он возвращает страницу на которой, скажем, картинки, то он выставит свой адрес, конечно же, и браузер полезет напрямую.
 
вам нужно настраивать на 192.168.10.51 чтобы ссылки на ресурсы были с адресом nginx.
 
либо чтобы URL ресурсов на странице были без указания IP

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 06:50 16-10-2023 | Исправлено: Mavrikii, 06:59 16-10-2023
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Может не понимаем друг друга...
 
Допустим мой сервер http://site.ru:8989 и реверс прокси находиться на нём и делает запросы Proxy_pass http://192.168.10.51, то при загрузке всех ресурсов он пытается их грузить с адреса http://site.ru без указания порта из за чего он не может загрузить ничего, вот мне и надо как то указать чтобы он грузил с этого адреса, но с указанием порта.
 

Всего записей: 1758 | Зарегистр. 15-03-2004 | Отправлено: 07:12 16-10-2023
Mavrikii

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

Цитата:
он пытается их грузить с адреса http://site.ru без указания порта из за чего он не может загрузить ничего, вот мне и надо как то указать чтобы он грузил с этого адреса, но с указанием порта.

это должен делать ваш сервер на .51 - генерить URL с указанием порта, либо не указывать домен/ip/порт для ресурсов вообще.
 
сейчас у вас .51 возвращает, к примеру, <img src='http://site.ru/image.jpg'>, а нужно чтобы либо генерил с портом, либо просто /image.jpg
 
эти ресурсы у вас в странице ответа, nginx ее переделывать не будет, поэтому задача .51 правильно генерить URL ресурса.
 
и https://serverfault.com/questions/932628/how-to-handle-relative-urls-correctly-with-a-nginx-reverse-proxy

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 07:16 16-10-2023 | Исправлено: Mavrikii, 07:17 16-10-2023
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
ничё не понял по ссылке... можно как то кратко ?

Всего записей: 1758 | Зарегистр. 15-03-2004 | Отправлено: 08:02 16-10-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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