Неожиданная ошибка 404 на всех маршрутах. Приложение laravel все из внезапно - NGINX | PHP-FPM

У меня есть следующий файл конфигурации nginx

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#


server {

    root /var/www/open_final/current;     
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name app.mypersonaldomain.co;
        if ($http_x_forwarded_proto != "https") {
          rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
        }

#        if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') {
#         return 301 https://mobile.mypersonaldomain.co;
#        }
    location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
        #       try_files $uri $uri/ =404;
                try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
}


server {

    root /var/www/open-backend-v2/current/public;
    index index.php index.html index.htm;

    server_name localhost v2-api.mypersonaldomain.co;

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

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

У меня есть два приложения, запущенных на этом сервере nginx. Одно из них - это приложение Laravel (PHP) и приложение Angular (Front-end). Я заметил, что на прошлой неделе все маршруты серверного приложения (PHP) начали выдавать ошибку 404 Not Found. Я перезапустил свой nginx, но он все еще приближался. Наконец я перезапустил свой экземпляр aws, и он начал работать нормально. Вчера снова неожиданно URL-адреса начали выдавать 404, и мне пришлось перезапустить экземпляр.

Внешнее приложение загружалось, но серверные (Laravel-PHP) URL-адреса выдавали 404.

Я подозреваю, что это делает хакер. В последние 2 года этого не происходило, и это началось с прошлой недели.

В чем может быть причина? Это похоже на подделку файла .htaccess или это как-то связано с конфигурацией nginx.Но если да, то почему в маршрутах приложений laravel отображается 404.

Нужна помощь в этом. Что могло быть причиной этого? Кто-нибудь сталкивался с этой проблемой?

1
задан 22 January 2019 в 10:40
2 ответа

Все в порядке со службой PHP FPM? Возможно, эта служба аварийно завершает работу и возвращается после перезагрузки.

Проверьте статус службы, если вы получили все сообщения 404, а также журналы

0
ответ дан 4 December 2019 в 03:18

Я вижу, вы смешали 2 домена в одном nginx.conf. Это очень запутанно, потому что теперь я понятия не имею, чего вы хотите достичь. Я использую NginX на многих своих веб-серверах, на большинстве из них обслуживается несколько веб-сайтов. В этом случае у меня есть хороший метод, который служит мне годами, позвольте мне поделиться им с вами, чтобы вы могли получить более чистый вид.

Во-первых, отделите nginx.conf от вашего website.conf. Создайте / etc / nginx / sites-available и / etc / nginx / sites-enable . В nginx.conf я удаляю все блоки server , поэтому я знаю, что обслуживаются только веб-сайты, которые я разрешил, и ничего больше. Оставьте только блок http и событий и все остальное, например пользователя . Закомментируйте свою строку включения в блоке http и добавьте новую строку в соответствии с этим:

        #include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*.conf;

Теперь создайте новый файл конфигурации /etc/nginx/sites-available/co.mypersonaldomain.mobile .conf . Добавьте два серверных блока. Первый (если вы хотите перенаправить весь HTTP на HTTPS, должен быть именно таким:

server {
       listen         80;
       server_name    app.mypersonaldomain.co;
       return         301 https://$server_name$request_uri;
}

Второй блок server должен быть настроен в соответствии с вашими потребностями, я не могу помочь в этом. Но из вашей конфигурации я могу сказать вам, что вы также можете пропустить страницы с ошибками и их расположение, если только вы не используете специальную сборку. Все остальное в порядке. Кроме того, огромная рекомендация - использовать пользовательские файлы журнала, а не стандартные журналы NginX, чтобы вы могли легко различать свои веб-сайты на своем сервере и упростить обслуживание. Добавьте эти строки во 2-й сервер блок

    error_log               /var/log/nginx/co.mypersonaldomain.mobile/error.log;
    access_log              /var/log/nginx/co.mypersonaldomain.mobile/access.log main;

После этого вы можете просто связать этот файл конфигурации в папку sites-enabled с помощью этой команды: ln -s /etc/nginx/sites-available/co.mypersonaldomain.mobile.conf / etc / nginx / sites-enable . Кроме того, не забудьте создать папку для файлов журнала: mkdir /var/log/nginx/co.mypersonaldomain.mobile/ .

Наконец, вы можете протестировать конфигурации NginX перед или активируете их с помощью nginx -t . Если этот синтаксис верен, просто перезапустите NginX и вуаля.

Моя проблема с вашей целью заключается в том, что имя домена v2-api.mypersonaldomain.co . Понятно, что вы пытаетесь использовать это как бэкэнд и использовать для него API, и ваша конфигурация выглядит достаточно круто, просто создайте для нее отдельную конфигурацию в / etc / nginx / sites-available / co. mypersonaldomain.v2-api.conf и создайте его для себя. Однако вы перенаправляете пользователей с http://app.mypersonaldomain.co на https://app.mypersonaldomain.co , но этот домен вообще не обслуживается в вашем текущем конфигурация

0
ответ дан 4 December 2019 в 03:18

Теги

Похожие вопросы