Editar

Editar

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.

informação relacionada