Suponha que eu tenha um domínioexemplo.come está localizado emwww/wwwroot/exemplo. Eu também criei um subdomínioapi.exemplo.comcriando um CNAMEAPIapontando paraexemplo.com. Para fins de uso, criei um diretório chamadoAPIque está localizado emwww/wwwroot/apique certamente não está no diretório raiz do meu domínio.
Hospedarei códigos API de diferentes projetos independentes no diretório API (www/wwwroot/api).
Suponha que eu tenha um projeto chamadoProjeto Demoe criei um diretório junto com os códigos API necessários dentro do diretório (www/wwwroot/api/DemoProject).
Agora o que eu quero é se eu ligarapi.example.com/DemoProjectdeve apontar para o diretório www/wwwroot/api/DemoProject. Como posso fazer isso no NGINX?
Aqui preciso de algumas regras para poder acessar qualquer diretório dentrowww/wwwroot/apisempre que chamo api.example.com/DirectoryName correspondente ao nome do diretório.
Como:
- api.example.com/Googledeveria apontar parawww/wwwroot/api/Google
- api.example.com/Facebookdeveria apontar parawww/wwwroot/api/Facebook
- api.example.com/Netflixdeveria apontar parawww/wwwroot/api/Netflix
Aqui está o arquivo de configuração NGNIX do meu domínio example.com atual
server
{
listen 80;
listen 443 ssl http2;
server_name example.com api.example.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/panel_ssl_site;
#SSL-START SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/example.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#referenced redirect rule, if commented, the configured redirect rule will be invalid
include /www/server/panel/vhost/nginx/redirect/example.com/*.conf;
#ERROR-PAGE-START Error page configuration, allowed to be commented, deleted or modified
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP reference configuration, allowed to be commented, deleted or modified
#SECURITY-START Hotlink protection configuration
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log off;
valid_referers example.com;
if ($invalid_referer){
return 404;
}
}
#SECURITY-END
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL rewrite rule reference, any modification will invalidate the rewrite rules set by the panel
include /www/server/panel/vhost/rewrite/example.com.conf;
#REWRITE-END
# Forbidden files or directories
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
# Directory verification related settings for one-click application for SSL certificate
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log off;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log off;
}
access_log /www/wwwlogs/example.com.log;
error_log /www/wwwlogs/example.com.error.log;
}
Sou muito novo na tarefa administrativa. Estou fazendo isso em alguns dos meus projetos pessoais. Estou tendo dificuldades para enfrentar isso. Peço desculpas antecipadamente se este for um problema simples. Também obrigado antecipadamente.
Editar
Na configuração, na linha
server_name example.com api.example.com;
Tenho domínio e subdomínio porque habilitei o redirecionamento. Se alguém ligar apenas para api.example.com, será redirecionado para example.com.