Editar

Editar

Supongamos que tengo un dominioejemplo.comy se encuentra enwww/wwwroot/ejemplo. También he creado un subdominioapi.ejemplo.comcreando un CNAMEAPIapuntando aejemplo.com. Para fines de uso, he creado un directorio llamadoAPIque se encuentra enwww/wwwroot/apique ciertamente no está en el directorio raíz de mi dominio.

Alojaré códigos API de diferentes proyectos independientes en el directorio API (www/wwwroot/api).

Supongamos que tengo un proyecto llamadoProyecto de demostracióny he creado un directorio junto con los códigos API necesarios dentro del directorio (www/wwwroot/api/DemoProject).

Ahora lo que quiero es si llamoapi.example.com/DemoProjectdebe apuntar al directorio www/wwwroot/api/DemoProject. ¿Cómo puedo hacerlo en NGINX?

Aquí necesito algunas reglas para poder acceder a cualquier directorio dentrowww/wwwroot/apicada vez que llamo a api.example.com/DirectoryName que coincide con el nombre del directorio.

Como:

  • api.ejemplo.com/Googledebería señalar awww/wwwroot/api/Google
  • api.example.com/Facebookdebería señalar awww/wwwroot/api/Facebook
  • api.example.com/Netflixdebería señalar awww/wwwroot/api/Netflix

Aquí está el archivo de configuración NGNIX de mi dominio actual example.com

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;
}

Soy muy muy nuevo en la tarea administrativa. Lo estoy haciendo para algunos de mis proyectos personales. Estoy teniendo dificultades para afrontar esto. Pido disculpas de antemano si se trata de un problema simple. También gracias de antemano.

Editar

En la configuración, en la línea.

server_name example.com api.example.com;

Tengo dominio y subdominio porque habilité la redirección. Si alguien llama solo a api.example.com, será redirigido a ejemplo.com.

información relacionada