ApacheのみをPHPにリクエストし、他のすべてをNGINXで処理する方法は?
公式ドキュメントでは、他のすべてのものと同様に、彼らはこれを行います:
server {
listen one.example.com;
server_name one.example.com
location / {
proxy_pass http://127.0.0.1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* \.(jpg|jpeg|gif|html)$ {
root /spool/www;
access_log off;
expires 30d;
}
}
つまり NGINXが処理するすべてのファイル形式がリストされ、他のすべてはproxy_pass http://127.0.0.1/を経由します 。 すべての可能な拡張オプションをリストすることは不可能です。 正規表現で少し考えてみると、次のようになります。
server {
listen one.example.com;
server_name one.example.com
location / {
proxy_pass http://127.0.0.1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr
}
location ~* \.(?!(php|php5|phps)$)[^.]*[^\/]$ {
root /usr/local/www/one.example.com/;
}
つまり .php、.php5、phpsで終わらない、またはアドレスが「/」で終わらないすべてのファイルの処理がNGINX、phpに与えられ、インド人がルートを処理します。
upd: lomikはより合理的な解決策を提案しました。
server {
listen one.example.com;
server_name one.example.com
location / {
root /usr/local/www/one.example.com/;
index index.php index.html index.htm;
}
location ~ \.php {
proxy_pass http://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}