Acceso a indice de contenido fuera de la carpeta html

Iniciado por FreeCellnet, 7 Julio 2019, 16:18 PM

0 Miembros y 1 Visitante están viendo este tema.

FreeCellnet

Hace tiempo que me llevo haciendo esta pregunta, abrí con autoindex acceso a contenido a la carpeta doc, que esta ubicada dentro de la carpeta html, que es basicamente donde estan alojadas las paginas web, pero si me llevo la carpeta doc, fuera de la carpeta html, ya no puedo tener acceso. Puesto que teoricamente esta saliendo fisicamente del servidor, y por tanto , del dominio.

Por tanto se me ocurrio no moverla, yy hacer un tunel, llamada y creada como carpeta link a un discoduro externo, puesto que el contenido no puede estar en el mismo sitio que la pagina web.

Pero la carpeta que me hacia de tunel para el acceso a contenido del disco duro extterno no me fue.

Entonces me dijeron que podia mover o crear el servidor donde estuviera el discoduro externo, es decir, hacerlo allí donde hubiera espacio.

Tampoco quise esta opcion.

Entonces, lo que he encontrado es una solucion, pero para servidores Apache.

Código (apache) [Seleccionar]
<IfModule mod_alias.c>
   Alias /MisDatosLink/ "/datos/"
   <Directory "/datos">
       Options Indexes MultiViews
       AllowOverride None
       Order allow,deny
       Allow from all
   </Directory>
</IfModule>


Esa solucion, no pasa por la de utilizar lo que hasta hora venía haciendo, es decir, modificar el archivo de configuracion nginx.

No se de donde se han sacado esto, ¿Puede ser un htaccess?

Esta solucion viene dada por el foro forosdelweb, pero actualmente no admite registros, estoy buscando otras denominaciones a este problema, haber si cambiando las palabras encuentro algo.

He estado estudiando un libro muy interesante de debian-handbook de 540 paginas y...

Creo que nginx, al igual que apache utiliza la carpeta etc/nombredelservidor/sites-avaliable/(en mi caso default).conf y al abrirlo con editor van modificando el servidor virtual en el puerto 80, soolo que el lenguaje es bien diferente porque en Apache usan..

Código (apache) [Seleccionar]
<VirtualHost *:80>
ServerName www.falcot.org
ServerAlias falcot.org
DocumentRoot /srv/www/www.falcot.org
</VirtualHost>



Y lo mio es mas  ...nginx...

server

{ lisen ... /

location  

Pero cuando entra donde a mi me interesa, el acceso a directorios me dice en el apache lo siguiente

Código (apache) [Seleccionar]
<Directory /var/www>
Options Includes FollowSymlinks
AllowOverride All
DirectoryIndex index.php index.html index.htm
</Directory>


Y lo unico que me hace falta es un enpujon entre esto y lo siguiente:

Código (apache) [Seleccionar]
<IfModule mod_alias.c>
   Alias /MisDatosLink/ "/datos/"
   <Directory "/datos">
       Options Indexes MultiViews
       AllowOverride None
       Order allow,deny
       Allow from all
   </Directory>
</IfModule>



Pero en nginx

HAsta ahí mas o menos entiendo por que

Indexes: le indica al servidor que provea una lista del contenido de los directorios si el
pedido HTTP del cliente apunta a un directorio sin un archivo de índice (es decir, que no
existe en él ninguno de los archivos enumerados en la directiva DirectoryIndex)

Multiviews: activa la negociación de contenido; el servidor puede utilizar esto para proveer
una página web que utilice el idioma preferido configurado en el navegador.




Mod: Obligatorio el uso de etiquetas GeSHi.

@XSStringManolo

No te sirve hacer un copia y pega de los archivos del disco externo en un subdirectorio de la carpeta html?
Html no provee ninguna forma de linkar html externo. Tienes muchas opciones para hacerlo.
Iframe, object data, jquery, include del lado del servidor con templates en html o el include de php. Use el que mas te convenga.

FreeCellnet

#2
Esque no me caben porque son 4TB de archivos y mi servidor esta en un micro SD de 256GB

Mirare que es todo esto..

Iframe, object data, jquery, include del lado del servidor con templates en html o el include de php.

Y segun vaya avanzando te digo.

Gracias

#!drvy

#3
En nginx seria algo así:

Código (apache) [Seleccionar]
server {
   server_name example.com;
   listen 80;

   index index.html;

   # Directorio principal.
   root /var/www/example.com;

   location / {
       try_files $uri $uri/ =404;
   }


   # Alias...
   location /MisDatos {
       root /home/pepe/datos/;
       autoindex on;
       try_files $uri $uri/ =404;
   }
}



Saludos

FreeCellnet

#4
Gracias por contestar ;)

Bueno, yo lo que pretendo es poner el contenido en un disco duro externo, y solo puede ser a traves de un puerto USB3, por lo tanto a traves de la carpeta media/odroid/Maxtor

No obstante voy a poner la configuracion que de momento me funciona, que es poner la carpeta de contenido llamada data dentro de la carpeta html.

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;

   index index.html index.php;

   server_name _;

   location /data/ {
      autoindex on;
 
   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}

He borrado la carpeta data, y la he puesto en mi disco duro externo, poniendo la localizacion del contenido, siguiendo la logica al referenciar carpetas.

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;

   index index.html index.php;

   server_name _;

   location /media/odroid/Maxtor/ {
      autoindex on;
 
   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}

pero logicamente no me va porque la localizacion debe de estar dentro del dominio.

Asi que, borre el contenido de la carpeta donde estan alojadas las paginas web, y las puse dentro de Maxtor, que es un disco duro externo conectado por USB, asi que cree las carpetas en este, y dentro de la carpeta html , una carpeta con el nombre de data.

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /media/odroid/Maxtor/www/html;

   index index.html index.php;

   server_name _;

   location /data/ {
      autoindex on;
 
   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}

pero tampoco me fue asi.

Ahora estoy provando la configuracion que me has proporcionado, como habras visto, el primer location que engloba el dominio esta intacto, porque las busqueda se hace fuera del dominio, y esta puesta abajo.

pero con ciertos matices porque, yo tengo un dico extraible que se llama Maxtor, entonces, tambien hay ciertos cambios, por jemplo, la direccion va antes que index.html.

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;

   index index.html index.php;

   server_name _;

   location / {
       try_files $uri $uri/ =404;
   }

       location /Maxtor {
             root /media/odroid/;
             autoindex on;

   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}


Porque se supone que en el ejemplo anterior que me has proporcionado, la carpeta Misdatos esta dentro de la carpeta datos, y esta a su vez, dentro de la carpeta pepe.

Todas estas configuraciones son guardadas dentro de la carpeta sites-avalible de la carpeta nginx en la respectiva carpeta de configuracion etc y guardadas, con el posterior reinicio de servicio del servidor

No penseis que porque lo haya puesto aqui  www.repositoryofmechanisms.mooo.com es solo para que veais la configuracion que lleva en este instante.



De todas formas voy a habilitar una carpeta que se llama data, dentro de la carpeta html, que esta en dentro del servidor, no en un disco duro externo, que se llama data para que veais que el invento funciona, pero que no he logrado hacerlo dentro del disco duro externo, que es la idea, porque dentro del servidor solo tengo 200GB.

logicamente, he puesto

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;

   index index.html index.php;

   server_name _;

   location /data/ {
       autoindex on;
   }

       location /Maxtor {
             root /media/odroid/;
             autoindex on;

   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}

Y al habilitar la el location del dominio, he puesto un pdf, un mp3 un mp4 y un jpg dentro de la carpeta data para que veais que el autoindex si me va, pero solo dentro de las carpetas html

es decir www.repositoryofmechanisms.mooo.com/data/

La idea es ponerlo en un disco duro externo, pero al poner la ruta no me va.


Buuueno, parace que esto es lo que estoy buscando , lo voy a probar para ver que tal

https://forum.owncloud.org/viewtopic.php?t=28139

Pero ahora se genera otra duda, sobre la siguiente instruccion

chown -R www-data:www-data /media/server/SeagateExpansionDrive/owncloud/data

Supuestamente esto es para dar permisos a la visualizacion de contenido a esa ruta que esta fuera del dominio, pero lo de -R, no me guta un pelo, eso quiere decir que usuarios externos que accedan a mi web me van a quitar o joder archivos? o solo Read? es decir, solo se pueden leer no?


Buuueno, el archivo config.php no lo encuentro en mi sistema operativo, probablemente porque estan en debian o una distribucion de debian, pero cuando en el foro del hilo este que acabo de poner el link hace poquito hablaban de modificar el www-data, eso si me suena, y eso yo lo tengo en la carpeta nginx del archivo nginx.conf.

Vamos haber si cambiando lo que tengo dentro es decir, esto..


Le tengo que poner en la primera linea segun tengo entendido por el hilo del foro este lo siguiente:

Lo primero que tienes que hacer es darle los permisos al directorio:

en el shell, como root le dices:

chown -R www-data:www-data /media/server/SeagateExpansionDrive/owncloud/data


Es decir, se supone que.... abriendo una consola terminal y previamente habiendo modificado la ruta de acceso de los directorios de los archivos en nginx.conf de la carpeta sites avaliable /media/server/SeagateExpansionDrive/owncloud/data/.

No tengo los permisos todavia de lectura *read( Despues abro una terminal y le meto esto

Lo primero que tienes que hacer es darle los permisos al directorio:

en el shell, como root le dices:

chown -R www-data:www-data /media/server/SeagateExpansionDrive/owncloud/data


Y se supone que ya puedo a traves de la pagina web referenciar la ruta de acceso a los archivos.

no?

Bueno ahora tambien he visto el chown -R en esta web

https://elbauldelprogramador.com/instalacion-optimizacion-servidor-web-nginx-i/

Pero de configuracion un poco diferente a la mia .

Es decir, su configuracion es esta

user  www-data;
worker_processes  1;

pid        /var/run/nginx.pid;

error_log  logs/error.log;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;

   gzip on;
   gzip_buffers 16 8k;
   gzip_disable "MSIE [1-6]\.";
   gzip_proxied any;
   gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  logs/access.log  main;

   sendfile        on;
   keepalive_timeout  3;
   index              index.html index.htm;

   server {
       listen       80;
       server_name localhost;
       root html;

   access_log  logs/host.access.log  main;

       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
               deny all;
               access_log off;
               log_not_found off;
       }

   }

}

Mientras que la mia es esta



user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
   worker_connections 768;
   # multi_accept on;
}

http {

   ##
   # Basic Settings
   ##

   sendfile on;
   tcp_nopush on;
   tcp_nodelay on;
   keepalive_timeout 65;
   types_hash_max_size 2048;
   # server_tokens off;

   # server_names_hash_bucket_size 64;
   # server_name_in_redirect off;

   include /etc/nginx/mime.types;
   default_type application/octet-stream;

   ##
   # SSL Settings
   ##

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
   ssl_prefer_server_ciphers on;

   ##
   # Logging Settings
   ##

   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;

   ##
   # Gzip Settings
   ##

   gzip on;

   # gzip_vary on;
   # gzip_proxied any;
   # gzip_comp_level 6;
   # gzip_buffers 16 8k;
   # gzip_http_version 1.1;
   # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

   ##
   # Virtual Host Configs
   ##

   include /etc/nginx/conf.d/*.conf;
   include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#   server {
#      listen     localhost:1ccc;
#      protocol   pop3;
#      proxy      on;
#   }
#
#   server {
#      listen     localhost:1ccc;
#      protocol   imap;
#      proxy      on;
#   }
#}

Me he dado cuenta que yo solo tengo 768 worker conecctions y que el tiene como 1024, luego ya no

Luego tiene esto

server {
       listen       80;
       server_name localhost;
       root html;

   access_log  logs/host.access.log  main;

       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
               deny all;
               access_log off;
               log_not_found off;
       }

   }

}

Donde se supone que yo lo tengo en otro archivo.

Bueno lo fundamental es que luego sigue y dice que


Cambiamos los permisos del directorio donde se alojan los recursos web a este último usuario y reiniciamos nginx:

chown -R www-data:www-data /usr/local/nginx/html/
service nginx destroy && service nginx start

Pero ojo, el mete todas sus paginas web ahi, por lo tanto no es lo mismos que quiero hacer yo, yo lo que necesito es solo el indece de directorio en un disco duro externo, por lo tanto.

Me voy al otro archivo de configuracion y le pongo:

server {

       listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;

   index index.html index.php;

   server_name _;

   location /data/ {
       autoindex on;
   }

   location /Maxtor {
       root /media/odroid/;
       autoindex on;

   }

       # This option is important for using PHP.
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
   }
}

A que location hara caso? puedo dejar uno?

depues de esto me pongo en la terminal y le digo:

chown -R www-data:www-data /media/odroid/Maxtor/data/

service nginx destroy && service nginx start

Porque es una cuestion de permisos no?

Acabo de hacer el chown y no me va.

Voy a quitar uno de los dos locations de la configuracion del servidor, estoy aprendiendo muchas cosas con la web de Alejandro Alcalde, voy aponer las tres paginas de tutoriales;

Probablemente el mejor tutorial que haya de nginx

https://elbauldelprogramador.com/instalacion-optimizacion-servidor-web-nginx-i/
https://elbauldelprogramador.com/instalacion-optimizacion-servidor-web-nginx-ii/
https://elbauldelprogramador.com/instalacion-optimizacion-servidor-web-nginx-iii/


AAa vale, segun esto necesito como requisito tener un certificado ssl para movel los archivos de la carpeta raiz a un dis duro externo..


https://www.digitalocean.com/community/tutorials/how-to-move-an-nginx-web-root-to-a-new-location-on-ubuntu-18-04

https://hostadvice.com/how-to/how-to-move-the-nginx-web-root-to-a-new-location-on-ubuntu-18-04/