Страница 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;
}
СПАСИБО, БРАТ! Очень выручил!!