Your question shows you need to understand how HTTP over TLS works.
TLS enciphers HTTP content, thus nothing is readable (either headers or
body).
How do you select the right certificate based on HTTP content? You
can’t.
Now what you ask requires access to enciphered HTTP content.
Short answer: there is no way to do that, you will need to use different
servers, either using SNI (as Andreas suggested) or separate IP
addresses.
Looks like from the config doco you can only set it for the
whole tree …
Untested by me, but if you set
ssl_verify_client optional;
and then within your
location ^~ /clientcert/ {}
you have something like
if ($ssl_client_verify != SUCCESS) { return 403; }
would that fit your needs?
(If the content below /clientcert/ is all handled by an external
process,
then possibly it could do its own validation or verification using
values
provided by nginx.)