Servidor Web(2) en Vagrant

Esta entrada está referida a la segunda parte del ejercicio servidor web(2) que nos plantea nuestro profesor en la asignatura de “servicios de red e internet”, aquí el ejercicio completo: http://josedom24.github.io/mod/serviciosgs/e_web_26

Podemos ver la primera parte del ejercicio servidor web en vagrant aquí: http://manuellunaperez.wordpress.com/2014/10/15/servidor-web/

1. Autentificación, Autorización, y Control de Acceso

1. Crea un escenario en Vagrant que tenga un servidor con una red publica, y una privada, un cliente conectada a la red privada. Crea un host virtual que se acceda con el nombre www.masterlan.com. A la URL www.masterlan.com/intranet sólo se debe tener acceso desde el cliente de la red local, y no se pueda acceder desde la anfitriona por la red pública. A la URL www.masterlan.com/internet, sin embargo, sólo se debe tener acceso desde la anfitriona por la red pública, y no desde la red local.

Creamos las máquinas vagrant, el fichero Vagrantfile estará configurado de la siguiente forma:

# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :servidor do |servidor|
    servidor.vm.box = "debian64"
    servidor.vm.hostname = "Servidor"
    servidor.vm.network "public_network",:bridge=>"eth0"
    servidor.vm.network "private_network", ip: "192.168.100.1",
      virtualbox__intnet: "redinterna"
  end
  config.vm.define :cliente do |cliente|
    cliente.vm.box = "debian64"
    cliente.vm.hostname = "cliente"
    cliente.vm.network "private_network", ip: "192.168.100.2",
      virtualbox__intnet: "redinterna"
  end
end

Instalamos el paquete «apache2» en la máquina servidor.

Creamos el directorio  «/var/www/masterlan» y dentro de él ponemos un index.html y 2 directorios; «intranet» e «internet» cada uno de ellos con un «index.html».

Cambiamos el propietario del directorio creado de forma recursiva:

chown -R www-data:www-data /var/www/masterlan/

Vamos a crear el sitio «masterlan», para ello vamos al directorio «/var/www/sites-available» y copiamos el fichero default dentro del directorio con nombre «masterlan».

Desactivamos el sitio web por defecto:

root@Servidor:/var/www/masterlan# a2dissite default
Site default disabled.
To activate the new configuration, you need to run:
 service apache2 reload

Editamos el fichero masterlan para que quede de la siguiente forma:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName masterlan.com
        ServerAlias www.masterlan.com
        ServerSignature On
        DocumentRoot /var/www/masterlan
        <Directory /var/www/masterlan>
                Options FollowSymLinks Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        <Directory /var/www/masterlan/intranet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                deny from all
                Allow from 192.168.100.0/24
        </Directory>
        <Directory /var/www/masterlan/internet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
                deny from 192.168.100.0/24
        </Directory>
</VirtualHost>

Activamos el host virtual con la orden «a2ensite masterlan»:

root@Servidor:/var/www/masterlan# a2ensite masterlan
Enabling site masterlan.
To activate the new configuration, you need to run:
 service apache2 reload

Una vez activado el sitio procedemos a reiniciar apache:

root@Servidor:/var/www/masterlan# service apache2 restart

Modificamos el fichero   «/etc/hosts» en la máquina cliente y en la máquina anfitriona para definir el host virtual creado.

En el cliente añadimos lo siguiente:

192.168.100.1      www.masterlan.com

En la máquina anfitriona añadimos:

192.168.1.114      www.masterlan.com

Accedemos desde la máquina anfitriona a «www.masterlan.com/intranet» y tenemos el acceso denegado:

Selección_036

Accedemos a «www.masterlan.com/internet» y podemos ver la página sin problemas.

Selección_035

Para realizar las pruebas desde el cliente es necesario instalar en este un navegador web a nivel de texto plano como por ejempo lynx. Una vez instalada este navegador ejecutamos «lynx www.masterlan.com/internet» y obetenemos la siguiente respuesta:

Selección_037

No tenemos permisos para acceder, continuación ejecutamos «lynx www.masterlan.com/intranet» :

Selección_038

Todo está configurado correctamente.

2.Autentificación básica. Limita el acceso a la URL www.masterlan.com/secreto. Comprueba las cabeceras de los mensajes HTTP que se intercambian entre el servidor y el cliente. ¿Cómo se manda la contraseña entre el cliente y el servidor?

Creamos el directorio «secreto» dentro del directorio web de «masterlan» con una página de inicio y le proporcionamos el propietario adecuado «www-data».

Necesitamos un fichero con las credenciales de los usuarios autorizados para acceder a la página privada, para ello creamos un directorio «login» dentro de «/etc/apache2» .Una vez creado ejecutamos en la terminal:

htpasswd -c /etc/apache2/login/pass.txt root

Con esta orden creamos las credenciales para el usuario «root», las credenciales se guardarán en el archivo «pass.txt»

Ahora vamos a editar el fichero de configuración del sitio «masterlan», añadimos lo siguiente especificando la ruta del fichero con las credenciales de los usuarios:

 <Directory /var/www/masterlan/secreto>
         Options Indexes FollowSymLinks MultiViews
         deny from all
         AuthUserFile "/etc/apache2/login/pass.txt"
         AuthName "Introduzca sus datos"
         AuthType Basic
         Require valid-user 
         Order allow,deny
         Allow from all
 </Directory>

Reiniciamos apache y accedemos desde la máquina anfitriona a «www.masterlan.com/secreto» :

Selección_039

Ponemos los datos y acceso y accedemos correctamente a la página:

Selección_040

Con el comando «curl -i www.masterlan.com/secreto»  obtenemos las cabeceras que se intercambian el servidor y el cliente:

root@cliente:/home/vagrant# curl -i 'www.masterlan.com/secreto'
HTTP/1.1 401 Authorization Required
Date: Mon, 10 Nov 2014 20:39:13 GMT
Server: Apache/2.2.22 (Debian)
WWW-Authenticate: Basic realm="Introduzca sus datos"
Vary: Accept-Encoding
Content-Length: 484
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.22 (Debian) Server at www.masterlan.com Port 80</address>
</body></html>

La contraseña entre cliente y servidor se envía encryptada en Base64.

3.Cómo hemos visto la autentificación básica no es segura, modifica la autentificación para que sea del tipo digest, y sólo sea accesible a los usuarios pertenecientes al grupo directivos. Comprueba las cabeceras de los mensajes HTTP que se intercambian entre el servidor y el cliente. ¿Cómo funciona esta autentificación?

Para cambiar el tipo de autentificación debemos activar el módulo «auth_digest«, para ello ejecutamos:

a2enmod auth_digest

Ahora procedemos a modificar la configuración añadida anteriormente, el fichero quedará así:

 <Directory /var/www/masterlan/secreto>
         Options Indexes FollowSymLinks MultiViews
         deny from all
         AuthUserFile "/etc/apache2/login/pass.txt"
         AuthName "directivos"
         AuthType Digest
         Require valid-user 
         Order allow,deny
         Allow from all
 </Directory>

Ahora añadimos los usuarios al fichero que contiene las credenciales de acceso, esta vez utilizamos la siguiente orden:

 htdigest -c /etc/apache2/login/pass.txt directivos manuel

Tambieén creamos un usuario que no tenga acceso:

 htdigest /etc/apache2/login/pass.txt sinacceso alejandro

Una vez realizada toda la configuración reiniciamos el servicio apache. Ahora accedemos a   «www.masterlan.com/secreto» desde un cliente para comprobar si funciona la configuración.

Selección_041

Si ponemos las credenciales del usuario alejandro no conseguimos acceder a la página porque no pertenece al grupo «directivos», mientras que si accedemos con el usuario «manuel» accedemos correctamente al sitio.

De nuevo realizamos «curl -i www.masterlan.com/secreto» y obtenemos las cabeceras que se intercambian el servidor y el cliente:

root@cliente:/home/vagrant# curl -i 'www.masterlan.com/secreto'
HTTP/1.1 401 Authorization Required
Date: Mon, 10 Nov 2014 21:04:01 GMT
Server: Apache/2.2.22 (Debian)
WWW-Authenticate: Digest realm="directivos", nonce="qB18gIcHBQA=cd0d54f2284e5b99b028e2354275f8741099c98e", algorithm=MD5, qop="auth"
Vary: Accept-Encoding
Content-Length: 484
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.22 (Debian) Server at www.masterlan.com Port 80</address>
</body></html>

Esta vez vemos como el tipo de autenticación es «Digest», el acceso sólo es válido para los usuarios pertenecientes al grupo «directivos» y las credenciales son cifradas en «MD5».

4.Vamos a combianar el control de acceso (punto 1) y la autentificación (punto 2 y 3), y vamos a configurar el virtual host para que se comporte de la siguiente manera: el acceso a la URL www.masterlan.com/secreto se hace forma directa desde la intranet, desde la red pública te pide la autentificación.

Procedemos a combinar las 2 opciones, para ello modificamos de nuevo el fichero de configuración del sitio «masterlan» y añadimos las lineas:

 Allow from 192.168.100.0/24
 satisfy any

La configuración del directorio deberá quedar así:

 <Directory /var/www/masterlan/secreto>
         Options Indexes FollowSymLinks MultiViews
         deny from all
         AuthUserFile "/etc/apache2/login/pass.txt"
         AuthName "directivos"
         AuthType Digest
         Require valid-user 
         Order allow,deny
         Allow from 192.168.100.0/24
         satisfy any
 </Directory>

Reiniciamos apache y procedemos a hacer las comprobaciones desde los clientes:

Si accedemos desde la máquina anfitriona se nos pide nuestras credenciales:

Selección_042

Mientras que si accedemos desde el cliente local no se nos piden credenciales y accedemos a la página directamente:

Selección_043

Una vez realizada toda la configuración del primer ejercicio, el contenido del fichero de configuración del sitio «masterlan» deberá ser así:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName masterlan.com
        ServerAlias www.masterlan.com
        ServerSignature On
        DocumentRoot /var/www/masterlan
        <Directory /var/www/masterlan>
                Options FollowSymLinks Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        <Directory /var/www/masterlan/intranet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                deny from all
                Allow from 192.168.100.0/24
        </Directory>
        <Directory /var/www/masterlan/internet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
                deny from 192.168.100.0/24
        </Directory>
        <Directory /var/www/masterlan/secreto>
                Options Indexes FollowSymLinks MultiViews
                deny from all
                AuthUserFile "/etc/apache2/login/pass.txt"
                AuthName "directivos"
                AuthType Digest
                Require valid-user 
                Order allow,deny
                Allow from 192.168.100.0/24
                satisfy any
       </Directory>
</VirtualHost>

2. Logs del servidor y configuración con .htaccess

1.Date de alta en CDMON y contrata una Plataforma de prueba. Con ello tenemos a nuestra disposición un hosting comercial con todas sus funcionalidades, incluso con un servidor DNS que nos da acceso al hosting, en mi caso con la URL http://jdmr.com.mialias.net. ¿Si necesitamos configurar el servidor web que han configurado los administradores de CDMON que podemos hacer? Explica la directiva AllowOverride de apache2.

Debemos crear un fichero «.htaccess» y configurar las directivas.

AllowOverride controla qué directivas se pueden situar el los ficheros .htaccess.

Los valores de AllowOverride pueden ser «All», «None», o una combinación de:

  • AuthConfig: Permite el uso de directivas de autorización (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).
  • FileInfo Permite el uso de directivas de control de tipo de documentos (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, etc).
  • Indexes Permite el uso de directivas que controlan los índices de directorios (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
  • Limit Permite el uso de directivas de acceso de hosts (Allow, Deny y Order).
  • Options Permite el uso los valores de la directiva Options.

Por ejemplo:

«Options FileInfo AuthConfig Limit»

o bien

AllowOverride None

Hay que tener en cuenta que si AllowOverride tiene un valor distinto a «None», el servidor web tendrá que buscar este fichero en todos los directorios que haya hasta llegar al fichero o directorio solicitado para aplicar la confiuración. Esto puede influir en el rendimiento del servidor web. Por este motivo es aconsejable poner de forma global «AllowOverride None»  y después activarlo en el directorio concreto que queramos que tenga una configuración específica.

2. Utilizando archivos .htaccess, y siguiendo esta guía de CDMON realiza las siguientes configuraciones:

  • Habilita el listado de ficheros en la URL http://tunombre.mialias.net/nas.

Una vez nos hayamos dado de alta en CDMON y hayamos contratado una plataforma de pruebas, accedemos a su panel y habilitamos las conexiones ssh. Para hacer esto buscamos en el apartado «Gestores de archivos» el elemento «SSH, sFTP», accedemos y activamos el servicio ssh y elegimos la contraseña de acceso.

Accedemos desde nuestra máquina por ssh y una vez accedamos creamos el directorio «nas» dentro del directorio «/web». Dentro del directorio «nas» creamos varios ficheros y directorios como ejemplo.

Creamos un fichero «.htaccess» con la linea   «Options +Indexes», para ello ejecutamos desde linea de comandos los siguiente:

echo "Options +Indexes" >> .htaccess

Accedemos a «mlp.com.mialias.net/nas/» y vemos que la configuración se ha realizado correctamente:

Selección_044

  • Crea una redirección permanente: cuando entremos en http://tunombre.mialias.net/google salte a www.google.es.

Dentro del directorio «web» creamos un nuevo directorio llamado «google»  con un fichero «.htaccess» dentro de él.

Añadimos la siguiente linea al fichero «.htaccess»:

echo "RedirectMatch 301 ^/(.*)$ http://www.google.es" >> .htaccess

Una vez añadida la configuración procedemos a visitar la url  «mlp.com.mialias.net/google» se la página redireccionará automáticamente a «www.google.es».

  • Pedir autentificación para entrar en la URL http://tunombre.mialias.net/prohibido. Puedes ver este tutorial de CDMON.

Creamos un nuevo directorio «prohibido» dentro del directorio «web». En la máquina local procedemos a crear un fichero «.htaccess» con la siguiente contenido:

AuthUserFile /home/mlp.com.mialias.net/web/prohibido/.pass 
AuthName "Inicio de Sesión"
AuthType Basic
Require user admin

Para crear el fichero «.pass» ejecutamos lo siguiente:

 htpasswd -c .pass admin

Se nos creará el fichero y también crearemos un «index.html» para mostrar la página cuando iniciemos sesión.

Enviamos los archivos por scp a la plataforma de pruebas contratada. Si accedemos a la url configurada nos dará error,  miramos el log y obtenemos el siguiente error:

[Tue Nov 11 20:53:53 2014] [alert] [client 85.136.169.126] /home/mlp.com/web/prohibido/.htaccess: AuthUserFile not allowed here

3. Vamos a seguir trabajando en el escenario que implementamos en los 5 primeros ejercicios. Vamos a instalar y configurar un analizador de logs de apache2 que nos permita generar estadísticas de acceso a nuestro servidor web (ejemplo [estadísticas de dit.gonzalonazareno.org](http://dit.gonzalonazareno.org/cgi-bin/awstats.pl

  • La URL de la estadística sera www.masterlan.com/estadistica.

Instalamos el paquete «awstats»:

aptitude install awstats

Creamos el directorio «estadística» dentro de «/var/www/masterlan» y le damos los permisos adecuados.

Cuando termine la instalación procedemos a modificar el fichero de configuración del sitio «masterlan», añadimos la siguiente información:

        <Directory /var/www/masterlan/estadistica> 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride None 
                Order allow,deny 
                allow from all 
        </Directory> 
        ScriptAlias /cgi­-bin/ /usr/lib/cgi-­bin/ 
        <Directory "/usr/lib/cgi­-bin"> 
                AllowOverride None 
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
                Order allow,deny 
                Allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error.log 
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
        LogLevel warn

Guardamos los cambios y reiniciamos el servicio apache.

Vamos a «/etc/awstats» y copiamos el fichero «awstats.conf» a un nuevo fichero:

cp awstats.conf awstats.estadisticas.conf

Modificamos el fichero creado y en la linea «SiteDomain=» añadimos «www.masterlan,com»:

SiteDomain="www.masterlan.com"

Lo demás lo dejamos como está. Para evitar problemas cambiamos el nombre al fichero de configuración por defecto.

mv awstats.conf awstats-orig

Para generar la página que mostrará el enlace ejecutamos lo siguiente:

/usr/lib/cgi-bin/awstats.pl -config=estadisticas -output -staticlinks > /var/www/masterlan/estadistica/index.html

Accedemos a la página desde el navegador:

Selección_045

  • El acceso a la estadística desde la red local está permitido, si hace desde fuera, por ejemplo desde el host, se requiere autentificación tipo digest (realizar este punto por medio de un fichero .htaccess)

En el fichero de configuración el sitio «masterlan» modificamos la configuración del directorio «/var/www/masterlan/estadistica» para que acepte ficheros «.htaccess»:

        <Directory /var/www/masterlan/estadistica> 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride All 
        </Directory>

Reiniciamos el servidor apache y creamos un fichero .«htaccess» con este contenido:

AuthUserFile "/etc/apache2/login/pass.txt"
 AuthName "directivos"
 AuthType Digest
 Require valid-­user
 Order allow,deny
 allow from 192.168.100.0/24
 satisfy any

Una vez realizada esta configuración se nos pedirá credenciales para acceder a la página de estadisticas.

  • Modifica el cron de awstats para que se genere las estadísticas cada 2 minutos.

Ejecutamos «crontab -e» y se nos abrirá un fichero donde introduciremos lo siguiente:

*/2 * * * * /usr/lib/cgi-bin/awstats.pl -config=estadisticas -output -staticlinks -update > /var/www/masterlan/estadistica/index.html

Con esto nuestras estadisticas se actualizarán cada 2 minutos.

3. Módulos

1. Módulo userdir: Activa y configura el módulo userdir, que permite que cada usuario del sistema tenga la posibilidad de tener un directorio (por defecto se llama public_html) donde alojar su página web. Publica una página de un usuario, y accede a la misma.

Añadimos el módulo «userdir», para ello:

a2enmod userdir

Una vez añadido reiniciamos el servidor apache y añadimos un nuevo usuario llamado «manuel» a nuestro equipo. Creamos dentro de su directorio home un directorio «public_html» y dentro de éste un fichero «index.html». Accedemos desde la máquina cliente y este es el resultado:

 lynx go 192.168.100.1/~manuel

Selección_049

Todo funciona correctamente.

2. (Optativo): Instalación de un servidor WebDAV que sea accesible desde la URL www.masterlan.com/webdav.

Activamos los siguientes módulos:

a2enmod dav
a2enmod dav_fs

Creamos el directorio «/var/www/masterlan/webdav» y dentro de él un fichero de prueba. Cambiamos los permisos del directorio de forma recursiva (www-data).

Modificamos el fichero de configuración del sitio «masterlan» y añadimos lo siguiente:

         DavLockDB /tmp/DavLock 
        <Directory /var/www/masterlan/webdav> 
                dav on 
                Options Indexes FollowSymLinks MultiViews 
                AuthUserFile "/etc/apache2/login/pass.txt" 
                AuthName "directivos" 
                AuthType Digest 
                Require valid­-user 
                Order allow,deny 
                allow from all 
        </Directory>

Accedemos desde la máquina anfitriona, para ello nos vamos a un directorio y vamos a «Archivo > Conectar con el servidor» , nos saldrá la siguiente ventana y la rellenamos:

Selección_046

Si las credenciales son correctas veremos el directorio creado en el servidor:

Selección_047

Una vez terminada toda la configuración del sitio «masterlan», el fichero quedará así:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName masterlan.com
        ServerAlias www.masterlan.com
        ServerSignature On
        DocumentRoot /var/www/masterlan
        <Directory /var/www/masterlan>
                Options FollowSymLinks Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        <Directory /var/www/masterlan/intranet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                deny from all
                Allow from 192.168.100.0/24
        </Directory>
        <Directory /var/www/masterlan/internet>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
                deny from 192.168.100.0/24
        </Directory>
        <Directory /var/www/masterlan/secreto>
                Options Indexes FollowSymLinks MultiViews
                AuthUserFile "/etc/apache2/login/pass.txt"
                AuthName "directivos"
                AuthType Digest
                Require valid-user
                Order allow,deny
                Allow from 192.168.100.0/24
                satisfy any
        </Directory>
        <Directory /var/www/masterlan/estadistica> 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride All 
        </Directory> 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
        <Directory "/usr/lib/cgi-bin"> 
                AllowOverride None 
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
                Order allow,deny 
                Allow from all 
        </Directory>
        DavLockDB /tmp/DavLock 
        <Directory /var/www/masterlan/webdav> 
                dav on 
                Options Indexes FollowSymLinks MultiViews 
                AuthUserFile "/etc/apache2/login/pass.txt" 
                AuthName "directivos" 
                AuthType Digest 
                Require valid-user 
                Order allow,deny 
                allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error.log 
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
        LogLevel warn 
</VirtualHost>

3. Vamos a volver a nuestro hosting en CDMON, vamos a crear una carpeta php donde vamos a tener un fichero index.php con el siguiente contenido:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Conversor de Monedas</title>
</head>		

<body>
<form action="index.php" method="get">
   	<input type="text" size="30" name="monto" /><br/>
    <select name="pais">
        <option name="Dolar">Dolar</option>
        <option name="Libra">Libra</option>
        <option name="Yen">Yen</option>
    </select>
    <input type="submit" value="convertir" />
   </form>
<?php        
    if (isset($_GET['monto'])) {
      define ("cantidad", $_GET['monto']);
    } else {
 	  define ("cantidad", 0);
    }
    if($_GET){
    // definimos los paises
    $tasacambios = array ("Libra"=>0.86,"Dolar"=>1.34,"Yen"=>103.56);
    // imprimimos el monto ingresado
    echo "<b>".cantidad." euros</b><br/> ".$_GET["pais"]." = ".cantidad*$tasacambios[$_GET["pais"]]." <br><br>";                                                
    // por cada pais imprimimos el cambio
    }
   ?> 
	   
</body>
</html>

Accedemos por ssh y creamos el directorio php.

Creamos el fichero «index.php» en nuestra máquina y lo subimos a la plataforma por scp.

Configura mediante un fichero .htaccess http://www.masterlan.com/php/moneda/cantidad, donde moneda indica el nombre de la moneda a la que queremos convertir (Dolar,Libra,Yen) y cantidad indica los euros que queremos convertir.

Creamos un fichero «.htaccess» con el siguiente contenido y lo ponemos en el directorio «php» de la plataforma de pruebas:

Options +FollowSymLinks
 RewriteEngine On
 RewriteBase /php
 RewriteRule ^([0-9]+)/([a-zA-Z]+)$ index.php?monto=$1&pais=$2

Tras enviar el fichero accedemos mediante la url  «http://mlp.com.mialias.net/php/175/Dolar»:

Selección_048

Deja un comentario