Laravel에서 루딩했지만 홈 화면 이외의 404 오류
소개
Docker로 환경 구축을 해, 개발을 진행해 막 브라우저에서 확인하려고 하면 개발한 어느 페이지에 리퀘스트를 보내도 404 에러 밖에 돌아오지 않는다.
http://localhost/ 에 요청을 보냈을 때만은 친숙한 Welcome 화면(아래의 화면)은 표시된다.
라는 에러에 직면했으므로, 망비록으로서 남겨 둡니다.
개발 환경
언어·도구 등
버전
PHP
7.2.26
라라벨
5.11.0
nginx
1.17.7
도커
19.03.5
라우팅 확인
$ php artisan route:list
+--------+----------+----------------+---------+-----------------------------------------------+-------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+----------------+---------+-----------------------------------------------+-------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | authors/create | | App\Http\Controllers\AuthorsController@create | web |
http:localhost/authors/create 페이지에 GET 메소드를 요청하고 있는 부분은 적절하게 라우팅되고 있어 특히 문제가 없는 것 같다. . .
권한 확인
$ ls -l
-rw-r--r-- 1 root root 4455 Feb 1 11:49 README.md
drwxr-xr-x 10 root root 320 Feb 1 11:55 app
-rw-r--r-- 1 root root 1686 Feb 1 11:49 artisan
drwxr-xr-x 4 root root 128 Feb 1 11:49 bootstrap
-rw-r--r-- 1 root root 1531 Feb 1 11:55 composer.json
-rw-r--r-- 1 root root 184470 Feb 1 11:55 composer.lock
drwxr-xr-x 15 root root 480 Feb 1 11:49 config
drwxr-xr-x 7 root root 224 Feb 1 11:49 database
drwxr-xr-x 723 root root 23136 Feb 1 11:39 node_modules
-rw-r--r-- 1 root root 455603 Feb 1 11:55 package-lock.json
-rw-r--r-- 1 root root 1113 Feb 1 11:55 package.json
-rw-r--r-- 1 root root 1513 Feb 1 11:52 phpunit.xml
drwxr-xr-x 9 root root 288 Feb 1 11:49 public
drwxr-xr-x 6 root root 192 Feb 1 11:49 resources
drwxr-xr-x 6 root root 192 Feb 1 13:52 routes
-rw-r--r-- 1 root root 563 Feb 1 11:49 server.php
drwxr-xr-x 5 root root 160 Feb 1 11:49 storage
-rw-r--r-- 1 root root 82 Feb 1 11:03 tailwind.config.js
drwxr-xr-x 6 root root 192 Feb 1 11:54 tests
drwxr-xr-x 41 root root 1312 Jan 30 14:21 vendor
-rw-r--r-- 1 root root 712 Feb 1 11:55 webpack.mix.js
퍼미션에 관해서도 rw가 부여되고 있으므로 특히 문제는 없을 것 같다.
nginx 설정
결론적으로 nginx 설정에 문제가있었습니다.
location 지시문에서 index index.html index.php;
이것으로는 index.html과 index.php밖에 열지 않는다고 하는 설정이 되어 버리는군요.
적절하게는, URI의 패스 마다의 패스를 지정해 줄 필요가 있었군요.
따라서 location 지시문을 아래에 수정하면 무사히 응답이 반환되었습니다.
location / {
try_files $uri $uri/ /index.php?$query_string;
}
수정 전 default.conf
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
index index.html index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
수정 후 default.conf
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Reference
이 문제에 관하여(Laravel에서 루딩했지만 홈 화면 이외의 404 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/phper_sugiyama/items/c68636d72b51af990fa5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)