Обратный прокси-сервер Nginx к удаленному серверу php-fpm с помощью fastcgi [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обратный прокси-сервер Nginx к удаленному серверу php-fpm с помощью fastcgi [закрыто]

Сообщение Anonymous »

У меня есть 2 экземпляра AWS EC2, один из которых находится в общедоступной подсети, настроен для работы в качестве экземпляра NAT и работает под управлением Nginx. Другой экземпляр находится в частной подсети, но может взаимодействовать с общедоступной. Соответствующие IP-адреса экземпляров, например:
  • 172.25.48.14 — экземпляр Nginx в общедоступной подсети (172.25.48.0/28), имеет Назначен эластичный IP-адрес
  • 172.25.48.140 — экземпляр, использующий php-fpm в частной подсети (172.25.48.128/28)
Дело в том, что я хочу, чтобы этот веб-сайт был доступен по определенному URL-адресу — я предполагал, что Nginx будет действовать как обратный прокси-сервер, который сопоставляет запросы к определенным поддоменам или URL-адресам соответствующих ресурсов. Итак, вот моя конфигурация Nginx:

Код: Выделить всё

http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
server_names_hash_bucket_size 128;

include /etc/nginx/mime.types;
default_type text/html;

proxy_headers_hash_bucket_size;
access_log /var/log/nginx/access.log
error_log /var/log/nginx/error.log

server {
listen 80;

location ~ ^/site1(.*)$ {
# These are commented out because no matter if specified or not the result is the same
# index index.php;
# try_files $uri $uri/ /site1/index.php?$request_uri;
location ~ \.php$ {
include fastcgi.conf;
try $uri =404;

fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 172.25.48.140:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
}
А вот, соответственно, конфигурация пула php-fpm для сайта в приватном экземпляре:

Код: Выделить всё

[site1]
user = www-data
group = www-data
listen = 172.25.48.140:9000
listen.allowed_clients = 172.25.48.14, 172.25.48.140, 127.0.0.1
php_admin_value[disable_functions] = exec, passthru, shell_exec, system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 8
pm.process_idle_timeout = 30s
pm.status_path = /php_status
ping.path = /ping
ping.response = wrrrrrrrrryyyyyyyyyyy
access.log = /var/log/php/8.3/$pool.access.log
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"
Для простоты предположим, что у меня есть только один файл index.php, который также находится в частном экземпляре в /apps/site1/ , у которого есть символическая ссылка /var/www/html/site1.
Проблема в том, что что бы я ни пытался, я получаю 404, и, судя по журналам на стороне частного экземпляра запрос не даже добраться туда - хотя я знаю, что у меня правильно настроены группы безопасности экземпляра и на правильных портах, потому что в противном случае я могу без проблем подключиться из частного экземпляра к общедоступному и наоборот. Единственный раз, когда я получил запрос на php-fpm (хотя и 404), это когда я переместил самый глубокий поиск «местоположения» (тот, который соответствует сценариям .php) на верхний уровень сервера - так в основном запрос направлялся прямо на 172.25.48.14, а не на 172.25.48.14/site1, как я предполагал.
Я что-то упустил? Может ли проблема заключаться в том, что исходные файлы расположены в том же экземпляре, что и php-fpm, а не на стороне Nginx? Я неправильно понимаю, как это работает? Пожалуйста, если у вас есть идеи по этому поводу, я буду чрезвычайно благодарен за вашу помощь. Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... th-fastcgi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»