実現したいこと
nginxでPHPファイルのルーティングを設定したいのですが、404 Not Foundエラーになってしまいます。
ご教示お願いします。
前提
こちらの記事を参考に、DockerでPHP+nginx+MySQLの環境構築をしました。
記事通り、localhost:8080/にアクセスして、phpの画面が表示されることを確認しました。
そして、これを応用して、localhost:8080/test1などにアクセスしたら、指定したPHPファイルを表示できるようにしたいと思っています。
試したこと
ホスト側のPCで以下にPHPファイルを格納しました。
.\nginx\html\test1\index.php
.\nginx\conf.d\default.confを以下のように編集しました。
server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php index.html; location /test1/{ root /usr/share/nginx/html/test1; index index.php index.html; } location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ [^/]\.php(/|$) { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
これで、以下のURLにアクセスしてみたのですが、404 Not Foundエラーとなってしまいます。
http://localhost:8080/test1/
ボリュームをマウントしているnginxのコンテナの中に入り、
[/usr/share/nginx/html/test1]の中を確認したら、index.phpは格納されていたので、マウントはうまくいっているようです。
ちなみに、このindex.phpの中身は、以下です。中身もコンテナの中で確認できています。
<?php echo phpinfo(); ?>
default.confの設定が効いているか確認するために、あえて、以下のような変更をしてみたところ、
localhost:8080/にアクセスしたら、今まで表示されていたphpの画面が表示されなくなったので、
やはり、default.confのファイル自体は設定として効いているようです。
server { listen 80; server_name localhost; root /usr/share/nginx/html; index index2.php index.html; # index.phpをindex2.phpに変更
また、default.confを書き換えるたびに、nginxのコンテナを再起動しています。
nginxのコンテナを再起動しないと、default.confの変更が反映されないことも確認できたので、
設定の書き換えを試している際は、nginxのコンテナの再起動のし忘れもしていないです。
補足情報(FW/ツールのバージョンなど)
Windows
Docker Desktop
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/29 05:51