From 857fd0674ebc07672234eafba967280c888cfca3 Mon Sep 17 00:00:00 2001 From: m9k Date: Wed, 30 Sep 2026 06:47:11 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=82=20=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D0=B2=D0=B0=D1=82=D1=8C=20user/pictures=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20nginx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nginx слушает 80 внутри контейнера, снаружи публикуется HTTP_PORT. Эгея с E2_SYNTH_URLS собирает абсолютные URL из FastCGI-параметров, поэтому HTTP_HOST и SERVER_PORT берутся из NGINX_EXTERNAL_PORT (тот же HTTP_PORT). Редиректы nginx делаются относительными. Шаблон монтируется из docker/nginx/, а не из несуществующего ./nginx/. Каталог data монтируется в nginx только для чтения, чтобы location статики отдавал pictures и файлы из user. Сервис nginx собирается из того же Dockerfile (target nginx) и ждёт здоровый php-fpm. --- compose.yaml | 14 ++++++++++++-- docker/nginx/egeya.conf.template | 10 ++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/compose.yaml b/compose.yaml index 84b1318..6e20b15 100644 --- a/compose.yaml +++ b/compose.yaml @@ -82,11 +82,20 @@ services: - backend nginx: + build: + context: . + target: nginx + args: + EGEYA_VERSION: ${EGEYA_VERSION:-4199} + EGEYA_URL: ${EGEYA_URL:-} + EGEYA_SHA256: ${EGEYA_SHA256:-} + image: ${EGEYA_NGINX_IMAGE:-local/egeya-nginx}:${EGEYA_VERSION:-4199} restart: unless-stopped depends_on: - - php + php: + condition: service_healthy environment: NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} @@ -97,7 +106,8 @@ services: - "${HTTP_BIND:-127.0.0.1}:${HTTP_PORT:-8080}:80" volumes: - - ./nginx/egeya.conf.template:/etc/nginx/templates/egeya.conf.template:ro + - ./data:/var/www/egeya-data:ro + - ./docker/nginx/egeya.conf.template:/etc/nginx/templates/egeya.conf.template:ro networks: - frontend diff --git a/docker/nginx/egeya.conf.template b/docker/nginx/egeya.conf.template index 87f3845..10485f4 100644 --- a/docker/nginx/egeya.conf.template +++ b/docker/nginx/egeya.conf.template @@ -7,6 +7,9 @@ server { keepalive_timeout 70; client_max_body_size ${NGINX_CLIENT_MAX_BODY_SIZE}; + absolute_redirect off; + port_in_redirect off; + root /var/www/html; index index.php index.html; @@ -42,9 +45,12 @@ server { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param HTTP_HOST $http_host; + fastcgi_param HTTP_HOST $host:${NGINX_EXTERNAL_PORT}; fastcgi_param SERVER_NAME $host; fastcgi_param SERVER_PORT ${NGINX_EXTERNAL_PORT}; + fastcgi_param HTTP_X_FORWARDED_HOST $host; + fastcgi_param HTTP_X_FORWARDED_PORT ${NGINX_EXTERNAL_PORT}; + fastcgi_param HTTP_X_FORWARDED_PROTO $scheme; fastcgi_param E2_SYNTH_URLS true; @@ -59,4 +65,4 @@ server { location ~ \.psa$ { deny all; } -} \ No newline at end of file +}