仮想ディレクトリのどのバックエンド コンテンツを nginx に送信するかを指定する適切な方法はありますか? 現在、tomcat と PHP-FPM を使用して nginx を実行しているサイトがあり、リクエストはデフォルトで tomcat に送信されます。dbadmin という仮想ディレクトリを追加したいと考えています (このディレクトリの内容は、ディスク上のまったく別の場所に保存されます)。リクエストは PHP-FPM ソケットに送信されます。
私の現在の設定 (conf.d/default.conf):
server {
listen 80 default_server;
server_name mydomain.com;
root /opt/apache-tomcat/webapps;
# cache statis files for 1 month
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 30d;
}
# deny access to hidden files (.whatever)
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
location ~ /dbadmin/(.*)$
{
index index.php;
alias /opt/www/phpmyadmin/$1;
}
location ~* \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /opt/www/phpmyadmin$fastcgi_script_name;
fastcgi_index index.php;
if (-f $request_filename) {
fastcgi_pass phpfpm;
}
}
location / {
# increase timeout to 2 min
proxy_read_timeout 120;
# needed to forward user IP address
proxy_set_header X-Real-IP $remote_addr;
# https support
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8080;
}
}
phpfpm はメインの nginx.conf で定義されています。
upstream phpfpm {
ip_hash;
server unix:/var/run/php-fpm/php-fpm.sock;
}