nginx は私のドメインアドレスの /blog に wordpress をインストールします

nginx は私のドメインアドレスの /blog に wordpress をインストールします

私はドメインを持っており、場所のオプションexample.comを使用して nodejs docker コンテナ 3000 ポートを指す nginx ウェブサーバーを使用して自分の Web サイトを提供しています。proxy pass/

server {
    listen 80 default_server;
    server_name example.com www.example.com;
    index index.php index.html;
    access_log /var/log/nginx/access_example.com.log;
    error_log /var/log/nginx/error_example.com.log;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

今、WordPress Web サイトを追加したいので/blog、サーバー ブロックの下にこれらの構成を追加しました。

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location /blog {
        root /var/www;
        try_files $uri $uri/ =404;
    }

ターミナルで/var/www/blog/ 実行すると、新しくインストールされた wordpress にアクセスできないのはなぜですか。問題はありませんし、ファイルの内容は確認できますが、テスト用に追加したものは読み込まれません。curl http://example.com/blog/license.txtlicense.txt/var/www/blog/index.phpindex.html

問題はtry_files $uri $uri/ =404;回線にあると思うのですが、役に立つ情報は見つかりませんでした。どんな助けでもいただければ幸いです

答え1

ご存知のとおり、Wordpress はフロント コントローラー アーキテクチャを使用します。つまり、PHP スクリプトを実行するためのエントリ ポイントは $WORDPRESS_ROOT/index.php です。それに応じてリクエストをルーティングするように nginx に指示する必要があります。

try_files $uri $uri/ /blog/index.php?$args;

ほとんどの静的コンテンツのリクエストは、最初の 2 つの値のいずれかによって処理されることに注意してください。Wordpress 自体がシナリオを処理する必要があるため、404 ハンドラーはありません。

しかしindex.phpは読み込まれていない

うーん、何が起こったのかあまり意味のある説明ではありません。つまり、明示的に ..../index.php を指定しましたか、それとも単に .../ を指定しましたか? どのような応答がありましたか? ログには何がありましたか?

PHP (およびほとんどの fcgi ハンドラ) には、通常、構成の別の場所に含まれた、かなり多くの構成が必要です。Ubuntu では、リポジトリからインストールした場合は、既にこれが配置されていると予想されますが、これをテストすることをお勧めします。また、上記のフロント コントローラの変更を行う前に、これに対処することをお勧めします。これは、問題を多少複雑にします。単純な「hello world」PHP スクリプトを使用します。

関連情報