2

ロケーションブロックのドキュメントをある程度読んだことがありますが、RegEx の経験があまりないため、自分がやろうとしていることをうまくやってのける方法について少し迷っています。次のnginx構成は、おそらく私が言いたいことよりもうまくやりたいことを説明するでしょう:

server {
        server_name example.com www.example.com;
        root /var/www/;
        index index.php;


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

        location ~ \.php$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        location / {
                try_files $uri @uwsgi;
        }

        location @uwsgi {
                include uwsgi_params;
                uwsgi_pass unix:/tmp/uwsgi.sock;
        }


}

example.com/uwsgi を介してボトル アプリによって提供されているため、この場所にあるすべてのものはボトル アプリにルーティングされ、そこで処理される必要があります。これは期待どおりに機能していますが、ロケーションルールに「例外」を追加して、そのexample.com/blog下にあるすべてのもの../sub1/sub2などがボトルアプリに向けられないようにする方法がわかりませんが、実際にはワードプレスとその PHP マジックによって処理されます。

これはセットアップが非常に簡単なように思えますが、この種の問題に対する簡単な解決策をグーグルで検索するのは非常に難しいことが証明されています.

4

1 に答える 1

2

これには微調整が必​​要かもしれませんが、おそらくネストされたロケーション ブロックを使用する必要があります。

server {
    server_name example.com www.example.com;
    root /var/www;
    index index.php;

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

        location ~ \.php$ {
            try_files $uri =404;
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
    }

    location / {
        try_files $uri @uwsgi;
    }

    location @uwsgi {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
    }
}

デフォルトの URI が/blog/index.php、すべての WordPress ファイルが配置されている場所に変更されていることに注意してください。

于 2016-04-24T22:32:16.640 に答える