@Lelouch

Почему этот конфиг nginx перестал работать после обновления Ubuntu c 18.04 до 20.04?

Добрый день!

Попробовал обновить сервер до Ubuntu 20.04 и был вынужден откатится на бекап, т.к. один из сайтов перестал нормально работать, а разобраться почему я самостоятельно не смог.

Есть вот такой конфиг:
server {
    listen 443 ssl http2;
    server_name domain.tld;
    root /var/www/domain.tld;
    index index.php index.html;
    autoindex off;

    location / {
        try_files $uri $uri/ /$uri.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_index index.php;
        try_files $uri =404;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(css|js|gif|ico|jpeg|jpg|png|svg|svgz|woff|woff2|ttf|otf|eot|json)$ {
        expires max;
    }

    location /l/ {
        rewrite ^/l/([a-zA-Z0-9/]+)$ /l.php?i=$1 last;
    }

    location /t/ {
        rewrite ^/t/([a-zA-Z0-9/]+)$ /t.php?i=$1 last;
    }

    location /w/ {
        rewrite ^/w/([a-zA-Z0-9/]+)$ /w.php?i=$1 last;
    }

    location /confirm/ {
        rewrite ^/confirm/(.*)$ /confirm.php?i=$1 last;
    }

    location /unsubscribe/ {
        rewrite ^/unsubscribe/(.*)$ /unsubscribe.php?i=$1 last;
    }

    location /subscribe/ {
        rewrite ^/subscribe/(.*)$ /subscribe.php?i=$1 last;
    }

    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}


Проблема в том, что после обновления nginx уходит в таймаут.

Если сделать вот так:
location / {
        try_files $uri /$uri.php$is_args$args;
    }


То начинает открывать страницы, но в таком варианте мой сайт перестает работать как ожидается. :)

Изначально движок предполагает, что будет крутится на Apache. Может быть я что-то неправильно сделал переводя правила для nginx? Вот исходный .htaccess:
Options +FollowSymLinks
Options -Multiviews

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-]+)$ $1.php [L]

# Link tracker
RewriteRule ^l/([a-zA-Z0-9/]+)$ l.php?i=$1 [L]

# Open tracker
RewriteRule ^t/([a-zA-Z0-9/]+)$ t.php?i=$1 [L]

# Web version
RewriteRule ^w/([a-zA-Z0-9/]+)$ w.php?i=$1 [L]

# unsubscribe
RewriteRule ^unsubscribe/(.*)$ unsubscribe.php?i=$1 [L]

# subscribe
RewriteRule ^subscribe/(.*)$ subscribe.php?i=$1 [L]


P.S.: Также, буду благодарен любым замечаниям о том как сделать конфиг лучше или что почитать о том как сделать правильно.
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Надо проверить логи.
Возможно, конфиги PHP в других местах и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы