Страница 1 из 1

Проблемы с Nginx1.26 + PHP.8.2-FCGI

Добавлено: 05 авг 2024, 14:24
kipivip
Привет.
Возникла проблема с запуском Nginx1.26 + PHP.8.2-FCGI

Мой локальный домен - test.local

.osp\project.ini
[test.local]
	php_engine   = PHP-8.2-FCGI
	nginx_engine = Nginx-1.26
	project_dir       = {base_dir}
	project_url       = https://{host_decoded}
	public_dir   = {base_dir}\public

.osp\nginx\test.local.conf
	index index.html index.htm index.php;
	charset utf-8;
	location / { try_files $uri $uri/ /index.php$is_args$args; }
	location = /favicon.ico { access_log off; log_not_found off; }
	location = /robots.txt { access_log off; log_not_found off; }
	error_page 404 /index.php;
	location ~ \.php$ {fastcgi_pass $php_server:9000; include fastcgi_params; }
	location ~ /\.(?!well-known).* { deny all; }

С такими настройками проект не работает. Логи молчат....
Если я использую модуль Apache то все работает, т.е. работает с такими настройками


.osp\project.ini
[test.local]
	php_engine   = PHP-8.2
	public_dir   = {base_dir}\public

Как поднять Nginx1.26 + PHP.8.2-FCGI?

Спасибо.

Re: Проблемы с Nginx1.26 + PHP.8.2-FCGI

Добавлено: 05 авг 2024, 17:30
wardex
Попробуйте такой конфиг с небольшими пояснениями.

[exapmle.conf]
autoindex off;
index index.php;
charset utf-8;

access_log off;
log_not_found off;

# По непонятной причине, в OSP nginx-1.26 каждый 3 запрос отваливается с 502.
# Помогает только отключение http2. При чем, в OSP nginx-1.24 такой проблемы нет.
# У вас такой проблемы может и не быть. Проверьте.
http2 off;

# Опционально. Перенаправление на https
if ($scheme ~* ^(?!https).*$) {
    return 301 https://$host$request_uri;
}

# Опционально. Force www.site.com => site.com
if ($host ~* ^www\.(.+)$) {
    return 301 $scheme://$1$request_uri;
}

# Опционально. Remove index.php. например в приложениях Laravel полезно.
if ($request_uri ~ "^/(.*)(?<=/)index\.php[/?]?((?<=[/?]).*)?$") {
    return  301 /$1$2;
}

# Опционально. Remove trailing slash.
if (!-d $request_filename) {
    rewrite ^/(.+)/$ /$1 permanent;
}

# Опционально.Clean Double Slashes
if ($request_uri ~* "\/\/") {
    rewrite ^/(.*) /$1 permanent;
}

# Опционально. Disable access to hidden files/folders
location ~* /\.(?!well-known/) {
    deny all;
}

# Опционально. Disable access to backup/config/command/log files
location ~* (?:\.(?:bak|co?nf(ig)?|in[ci]|log|sh|sql|tar|t?gz)|~)$ {
    deny all;
}

# Опционально. Кешируем статику.
location ~* ^.+\.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv|svgz?|ttf|ttc|otf|eot|woff2?)$ {
    expires 3d;
}

# Опционально.
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    expires 7d;
}

# Основное.
location / {
    try_files $uri /index.php?$query_string;
}

# НЕ ВКЛЮЧАТЬ!
# Т.к. в основном конфиге OSP nginx включена опция перехвата ошибок fast_cgi, 
# ваше приложение не сможет корректно обработать 404. Nginx выплюнет всё равно свою.
# Так же, нужно еще добавить try_files $fastcgi_script_name =404; 
# Присутствует в location ниже.
# Либо, отключите перехват ошибок в основном конфиге OSP nginx и включите эту опцию.
# error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_pass $php_server:9000;
    try_files $fastcgi_script_name =404;

    include fastcgi_params;

    fastcgi_param DOCUMENT_ROOT   $realpath_root;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}


Re: Проблемы с Nginx1.26 + PHP.8.2-FCGI

Добавлено: 06 авг 2024, 04:47
kipivip
Спасибо за ваш ответ.

Ошибка в том, что когда используешь свой site.conf OS6 генерирует файл в
{path_ospanel6}\modules\Nginx-1.26\conf\nginx.conf

и прописывает
server {
    set $php_server              127.127.126.61;
    listen                       127.127.126.55:80;
    listen                       127.127.126.55:443 ssl;
    server_name                  test.local www.test.local;
****
    include                      {path_ospanel6}/site.conf;
}
что-то не так с include {path_ospanel6}/site.conf;

я решил не использовать свой *site*.conf для Nginx и прописал в
{path_ospanel6}\modules\Nginx-1.26\conf\virtual_fcgi_host.conf

свою конфигурацию:
    location / {
		try_files $uri $uri/ /index.php$args;
    }
Чтобы он не подставлял /index.php в URL
wardex писал(а): 05 авг 2024, 17:30 Попробуйте такой конфиг с небольшими пояснениями.

[exapmle.conf]
autoindex off;
index index.php;
charset utf-8;

access_log off;
log_not_found off;

# По непонятной причине, в OSP nginx-1.26 каждый 3 запрос отваливается с 502.
# Помогает только отключение http2. При чем, в OSP nginx-1.24 такой проблемы нет.
# У вас такой проблемы может и не быть. Проверьте.
http2 off;

# Опционально. Перенаправление на https
if ($scheme ~* ^(?!https).*$) {
    return 301 https://$host$request_uri;
}

# Опционально. Force www.site.com => site.com
if ($host ~* ^www\.(.+)$) {
    return 301 $scheme://$1$request_uri;
}

# Опционально. Remove index.php. например в приложениях Laravel полезно.
if ($request_uri ~ "^/(.*)(?<=/)index\.php[/?]?((?<=[/?]).*)?$") {
    return  301 /$1$2;
}

# Опционально. Remove trailing slash.
if (!-d $request_filename) {
    rewrite ^/(.+)/$ /$1 permanent;
}

# Опционально.Clean Double Slashes
if ($request_uri ~* "\/\/") {
    rewrite ^/(.*) /$1 permanent;
}

# Опционально. Disable access to hidden files/folders
location ~* /\.(?!well-known/) {
    deny all;
}

# Опционально. Disable access to backup/config/command/log files
location ~* (?:\.(?:bak|co?nf(ig)?|in[ci]|log|sh|sql|tar|t?gz)|~)$ {
    deny all;
}

# Опционально. Кешируем статику.
location ~* ^.+\.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv|svgz?|ttf|ttc|otf|eot|woff2?)$ {
    expires 3d;
}

# Опционально.
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    expires 7d;
}

# Основное.
location / {
    try_files $uri /index.php?$query_string;
}

# НЕ ВКЛЮЧАТЬ!
# Т.к. в основном конфиге OSP nginx включена опция перехвата ошибок fast_cgi, 
# ваше приложение не сможет корректно обработать 404. Nginx выплюнет всё равно свою.
# Так же, нужно еще добавить try_files $fastcgi_script_name =404; 
# Присутствует в location ниже.
# Либо, отключите перехват ошибок в основном конфиге OSP nginx и включите эту опцию.
# error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_pass $php_server:9000;
    try_files $fastcgi_script_name =404;

    include fastcgi_params;

    fastcgi_param DOCUMENT_ROOT   $realpath_root;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}


Re: Проблемы с Nginx1.26 + PHP.8.2-FCGI

Добавлено: 09 янв 2025, 19:32
gdev
wardex писал(а): 05 авг 2024, 17:30 Попробуйте такой конфиг с небольшими пояснениями.

[exapmle.conf]
autoindex off;
index index.php;
charset utf-8;

access_log off;
log_not_found off;

# По непонятной причине, в OSP nginx-1.26 каждый 3 запрос отваливается с 502.
# Помогает только отключение http2. При чем, в OSP nginx-1.24 такой проблемы нет.
# У вас такой проблемы может и не быть. Проверьте.
http2 off;

# Опционально. Перенаправление на https
if ($scheme ~* ^(?!https).*$) {
    return 301 https://$host$request_uri;
}

# Опционально. Force www.site.com => site.com
if ($host ~* ^www\.(.+)$) {
    return 301 $scheme://$1$request_uri;
}

# Опционально. Remove index.php. например в приложениях Laravel полезно.
if ($request_uri ~ "^/(.*)(?<=/)index\.php[/?]?((?<=[/?]).*)?$") {
    return  301 /$1$2;
}

# Опционально. Remove trailing slash.
if (!-d $request_filename) {
    rewrite ^/(.+)/$ /$1 permanent;
}

# Опционально.Clean Double Slashes
if ($request_uri ~* "\/\/") {
    rewrite ^/(.*) /$1 permanent;
}

# Опционально. Disable access to hidden files/folders
location ~* /\.(?!well-known/) {
    deny all;
}

# Опционально. Disable access to backup/config/command/log files
location ~* (?:\.(?:bak|co?nf(ig)?|in[ci]|log|sh|sql|tar|t?gz)|~)$ {
    deny all;
}

# Опционально. Кешируем статику.
location ~* ^.+\.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv|svgz?|ttf|ttc|otf|eot|woff2?)$ {
    expires 3d;
}

# Опционально.
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    expires 7d;
}

# Основное.
location / {
    try_files $uri /index.php?$query_string;
}

# НЕ ВКЛЮЧАТЬ!
# Т.к. в основном конфиге OSP nginx включена опция перехвата ошибок fast_cgi, 
# ваше приложение не сможет корректно обработать 404. Nginx выплюнет всё равно свою.
# Так же, нужно еще добавить try_files $fastcgi_script_name =404; 
# Присутствует в location ниже.
# Либо, отключите перехват ошибок в основном конфиге OSP nginx и включите эту опцию.
# error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_pass $php_server:9000;
    try_files $fastcgi_script_name =404;

    include fastcgi_params;

    fastcgi_param DOCUMENT_ROOT   $realpath_root;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}

СПАСИБО, БРАТ! Очень выручил!!