Ошибки Апача - нужен совет

Автор sonny363, 31 августа 2022, 04:47:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

sonny363

Коллеги, добрый день!
Нужна консультация по настройкам Апача.
Дано: три абсолютно одинаковых комплекта Debian+Apache+MariaDB+PHP на трёх виртуалках. Настройки отличаются только адресами и доменными именами.
В одном из них Апач внезапно стал ежеминутно сыпать в error.log сообщениями вида:
Network is unreachable: connect to listener on [::]:80

Интенсивное гугление дало только один рецепт: заменить в конфиге Апача Listen 80 на Listen 0.0.0.0:80
После этой замены в ports.conf Апач не стартовал, пришлось ровно  то же сделать с Listen 443. Тут он стартовал, и ошибки исчезли.
Что меня смущает?

1. Данные советы все датированы 2009-2011 годами, то есть, всё это относится к довольно древним Апачам. Может, надо что-то сделать иначе?
2. Почему на одном сервере это случилось, а на двух остальных - нет?
3. Стоит ли превентивно так же поменять настройки на двух остальных серверах?
4. И вообще: не лечу ли я симптомы, а не болезнь?

ogost

Болезнь лечится заменой апача на nginx. Без шуток, проще в настройке и гораздо шустрее.

sonny363

ogost,Спасибо за совет.
1. Насколько легко можно перенести настройки Апача в nginx?
2. Как переносятся сертификаты https? Я использую сертификаты от LetsEncrypt, нужно ли их перегенерить?
3. Есть ли какие-нибудь тонкости во взаимодействии с MariaDB и PHP? У меня приложение (ownCloud) живёт только на php 7.4.
4. Возможно ли поднять nginx на сервере рядом с Апачем (чтобы иметь возможность откатиться назад в случае чего), не будут ли они конфликтовать? Все три сервера рабочие, довольно нагруженные, и проводить эксперименты на них не хотелось бы.

dzhoser

1. Затрудняюсь ответить
2. Также указывается путь в конфигах
3. У меня Nextcloud и эта связка работает
4. Рядом с апачем были проблемы, так как используются одинаковые порты. Можно развернуть в докере.
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

ogost

1. Зависит от сложности настроек апача. Если там у вас +- дефолтные настройки, то ничего сложного нет.
2-3. ответ выше
4. Можно на другом порту, рядом с апачем.

sonny363

В общем, сам nginx, как и ожидалось, поднялся легко.
А вот связка с php пока не работает - вместо исполнения php он скачивает эти файлы :(
Погуглил - пока решения не нашёл.

dzhoser

Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

sonny363

#7
dzhoser,это-то понятно, это я сразу сделал.
Похоже, не работает вот эта конструкция:
upstream php-handler {
    server unix:/var/run/php/php7.4-fpm.sock;
}

06 сентября 2022, 10:12:29
dzhoser,Пытаюсь сделать по вот этой ссылке.

endru

sonny363,если вы делаете какие то изменения в конфиге nginx, то выполняете от рута перегрузку конфига:
nginx -t && nginx -s reloadЕсли ошибок нет, то проверять работу нужно в браузере БЕЗ КЭША! Т.е. открыли новую сессию (закрыли все текущие вкладки, окна) в режиме инкогнито.

если это не помогло все конфиги в студию, ссылки на сторонние сайты - это не ваш рабочий конфиг.

sonny363

#9
endru,Вроде бы, через php прорвался, сайт сам по себе стартует.
Осталось вкорячить поддержку https.
UPD: вкорячил.

Подскажите, как в конфиге nginx сделать аналог DocumentRoot?
Чтобы мой сайт открывался не <имя>/owncloud, а <имя>?


22 сентября 2022, 11:25:39
Конфиги выглядят так:
/etc/nginx/sites-available/default:
server {
        listen 80 default_server;
        root /var/www;
        index index.html index.htm index.nginx-debian.html index.php;
        server_name my.com;
        location / {
                try_files $uri $uri/ =404;
        }
}

/etc/nginx/sites-available/owncloud.conf:
upstream php-handler {
    server unix:/var/run/php/php7.4-fpm.sock;
}

server {
    listen 80;
#    listen [::]:80;
    root /var/www;
    index  index.php index.htm index.html;
#    server_name  my.com;

#    include snippets/well-known.conf;
}
server {
    listen 443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;

    ssl_certificate /etc/letsencrypt/live/my.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/my.com/chain.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-ES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-ES256-GCM-SHA384;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";
#    include snippets/well-known.conf;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;
    server_name my.com;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-XSS-Protection "0" always;
            add_header X-Robots-Tag "none" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;

    ssl_certificate /etc/letsencrypt/live/my.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/my.com/chain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-ES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-ES256-CM-SHA384;

    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 30s;

#    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";

  location ^~ /owncloud {

        client_max_body_size 512M;
        fastcgi_buffers 8 4K;
        fastcgi_ignore_headers X-Accel-Buffering;

        gzip off;

        error_page 403 /owncloud/core/templates/403.php;
        error_page 404 /owncloud/core/templates/404.php;

location /owncloud {
            rewrite ^ /owncloud/index.php$uri;
        }

        location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|changelog|data)/ {
            return 404;
        }
        location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console|core/skeleton/) {
            return 404;
        }
        location ~ ^/owncloud/core/signature\.json {
            return 404;
        }
        location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|statu
s|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34])\.php(?:$|/) {
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param modHeadersAvailable true;
            fastcgi_read_timeout 180;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }
        location ~ ^/owncloud/(?:updater|oc[sm]-provider)(?:$|/) {
            try_files $uri $uri/ =404;
            index index.php;
        }
# Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~ /owncloud/.*\.(?:css|js) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "max-age=15778463" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Robots-Tag "none" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;
            access_log off;
        }

        location ~ /owncloud/.*\.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map|j
son) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "public, max-age=7200" always;
            access_log off;
        }
    }
}


ogost

это настраивается под параметром location.
сейчас, насколько вижу, у вас несколько location связанных с owncloud, вот их и настраивайте.

sonny363

ogost,то есть, ответа на вопрос "как сделать редирект одной строчкой" не будет?

ogost

Owncloud я поднимал в последний раз несколько лет назад, поэтому сходу вам не смогу ответить. Вникать в ваш конфиг мне право лень, не обесудьте, а редирект вы можете всегда посмотреть в руководтстве nginx, их всяких разных в гуглах полно.

sonny363


dzhoser

sonny363,
 напишите как сделали. Php.ini правили?
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков