У меня есть следующий файл конфигурации 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.
Нужна помощь в этом. Что могло быть причиной этого? Кто-нибудь сталкивался с этой проблемой?
Все в порядке со службой PHP FPM? Возможно, эта служба аварийно завершает работу и возвращается после перезагрузки.
Проверьте статус службы, если вы получили все сообщения 404, а также журналы
Я вижу, вы смешали 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
, но этот домен вообще не обслуживается в вашем текущем конфигурация