Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ОтВинта

  • записів
    7
  • коментарів
    57
  • перегляду
    3 094

Мультимова & Nginx+php-fpm


Vladzimir

1 716 переглядів

Якщо ви використовуєте панелі управління серверами VestaCP/Hestia в режимі Nginx+php-fpm без Apache (то ви вже молодці :).

І плануєте встановити (або вже використовуєте) багатомовність з префіксами виду /uk/url.html то перед вами постане одна проблема, яка пов'язана з кривим дефолтним конфігом Nginx в цих панелях.

Проблема полягає в тому що сервер не буде обробляти запити типу /uk/index.php?route= і видаватиме помилку 404.

Лікуємо.

Перед

            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

 

в location ~ [^/]\.php(/|$) {

потрібно записати

            if (!-e $request_filename) {
                rewrite ^/(.+)$ /index.php?_route_=$1 last;
            }

 

  • +1 9

12 коментарів


Recommended Comments

Відкрию секрет, якщо використовувати тільки nginx, то майже у всіх випадках потрібно правити його конфіг.

І до речі в VestaCP/Hestia конфіг nginx перенасичений конструкціями if, рекомендується використовувати все ж таки try_files.

На форумі є більш менш нормальний конфіг, який можна довести до пуття під власні потреби

  • +1 1
Надіслати
В 26.05.2023 в 10:01, Flint2000 сказав:

І до речі в VestaCP/Hestia конфіг nginx перенасичений конструкціями if, рекомендується використовувати все ж таки try_files.

Це ви зараз серйозно?

Прихований текст


#=========================================================================#
# Default Web Domain Template                                             #
# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS   #
# https://docs.hestiacp.com/admin_docs/web.html#how-do-web-templates-work #
#=========================================================================#

server {
    listen      %ip%:%web_ssl_port% ssl http2;
    server_name %domain_idn% %alias_idn%;
    root        %sdocroot%;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/%domain%.log combined;
    access_log  /var/log/nginx/domains/%domain%.bytes bytes;
    error_log   /var/log/nginx/domains/%domain%.error.log error;

    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
    ssl_stapling on;
    ssl_stapling_verify on;

    include %home%/%user%/conf/web/%domain%/nginx.hsts.conf*;

    location / {
        try_files $uri $uri/ @opencart;
        location ~* ^.+\.(jpeg|jpg|png|webp|gif|bmp|ico|svg|css|js)$ {
            expires     max;
            fastcgi_hide_header "Set-Cookie";
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    %backend_lsnr%;
            fastcgi_index   index.php;
            include /etc/nginx/fastcgi_params;
            include     %home%/%user%/conf/web/%domain%/nginx.fastcgi_cache.conf*;
        }
    }

    location @opencart {
        rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

    location /storage/ {
        deny    all;
        return  404;
    }

    location /vstats/ {
        alias   %home%/%user%/web/%domain%/stats/;
        include %home%/%user%/web/%domain%/stats/auth.conf*;
    }

    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }

    location ~ /\.(?!well-known\/) { 
       deny all; 
       return 404;
    }

    proxy_hide_header Upgrade;

    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;
}

 

Надіслати
В 26.05.2023 в 11:23, Vladzimir сказав:

Це ви зараз серйозно?

 

Дивно, в клієнтів інші конфіги бачив на цій панелі. Я намагаюся на ній не працювати, не подобається. Але іноді доводиться.

Надіслати

Ще лікується просто прописати усі службові посилання у вигляді ЧПУ через менеджер урлів. Якщо немає доступу до конфіга, чи ти в ньому не розумієш нічого)

Надіслати
В 07.06.2023 в 10:07, Fedka сказав:

Ще лікується просто прописати усі службові посилання у вигляді ЧПУ через менеджер урлів. Якщо немає доступу до конфіга, чи ти в ньому не розумієш нічого)

Не всі урли можуть мати ЧПУ, наприклад ті що викликаються через javascript.

  • +1 1
Надіслати
В 07.06.2023 в 11:30, Vladzimir сказав:

Не всі урли можуть мати ЧПУ, наприклад ті що викликаються через javascript.

 

Так. Дякую Вам за інформацію!

Надіслати
07.06.2023 в 10:07, Fedka сказал:

Ще лікується просто прописати усі службові посилання у вигляді ЧПУ через менеджер урлів. Якщо немає доступу до конфіга, чи ти в ньому не розумієш нічого)

Як раз така ситуація, немає доступу до конфігу. Не підкажете що таке "менеджер урлів" і як прописати службові посилання?

Надіслати

Якщо ці недопанелі стоять на вашому сервері і це ваш вибір - це ок. Якщо воно стоїть на платному хостингу і ви платите за це гроші - це не ок, міняйте панель або хостера.

Надіслати

Обов'язково поміняю, але  як вилікувати через менеджер урлів, бо корзина видає File not Found - для сайта це дуже критично 

Надіслати
01.08.2023 в 11:34, Genareb сказал:

Обов'язково поміняю, але  як вилікувати через менеджер урлів, бо корзина видає File not Found - для сайта це дуже критично 

це ніяк не повязано ні з панелями Hestiacp ні з nginx просто у вас кривий сайт, але прислухайтесь до професіоналів якщо у вас багато часу і немає чим занятися:mrgreen:

Надіслати

Доктор, я вчера ел желтый снег, а теперь у меня не показывает телевизор, если я посмотрю скабееву и сольвеба, путинг сдохнет?

Вот так выглядит ваш вопрос!!!

 

Конфиг nginx - это конфиг nginx, все панели так или иначе подставляют свои какие то паттерны и т.д. Для  опенкарта нужны определенные правила роутинга, которые будут реализовывать аналог роутинга из htaccess, это не совсем тривиальная задача, учитывая что у 90% стоит подделка, которая это все заворачивает через 404!

Поэтому обращайтесь к профессионалам!

Надіслати

Я помітив ще один недолік в конфігі: last-modified не віддається клієнту(точніше віддається тільки на сторінці товару), вже перепробував купу варіантів і з http2 on і з ssl і без - професіонали поділіться робочим конфігом кому вдалося завести last-modified на 2.3 nginx+php-fpm, не можу розгадати загадку.

Змінено користувачем Denys
Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.