Tabla de contenidos

1 Justificación •
2 Ficha técnica •
3 Servidor Web Nginx y Zope
3.1 Instalar y configurar Servidor
Web Nginx

3.2 Regla de Re-escritura de Zope ♦
3.3 Reinicie el servidor ♦

4 Servidor Web Apache2 y Zope
4.1 Instalar y configurar Servidor
Web Apache2

4.2 Habilitar módulos de
mod_rewrite y mod_proxy

4.3 Regla de Re-escritura de Zope
4.3.1 Plone como un domino
completo

4.3.2 Plone como una
porción de su sitio

4.3.3 Soporte HTTPS ◊
4.3.4 Reglas más elegantes ◊
4.3.5 Recomendaciones ◊

4.4 Reinicie el servidor ♦

5 Demostración •
6 Ver también •
7 Referencias •
Justificación
La implementación actual el sitio expone el puerto y el nombre de la aplicación Plone donde se publica el
sitio, la idea es ocultar eso a través de virtualhost, con un servidor Web.
Ficha técnica
Descripción general: Para esta tarea esta destinada a integrar e inicio de sesión y registro de
usuarios de Plone contra en LDAP.

Software probados: Nginx / Apache 2. •
Responsables: "Leonardo J. Caballero G." <lcaballero at cenditel dot gob dot ve>. •
Entorno de pruebas: Plone 3.3.5 con Instalador Unificado en CANAIMA GNU/Linux. •
Servidor Web Nginx y Zope
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Servidor Web Nginx y Zope 1
Instalar y configurar Servidor Web Nginx
Para instalar debe iniciar sesión como usuario "root" ejecute el siguiente comando: # aptitude
install nginx
Luego se debe agregar la configuración respectiva en Nginx con el siguiente comando: # vim
/etc/nginx/nginx.conf
Y agregue la siguiente configuración:
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
server_names_hash_bucket_size 64;
server_name_in_redirect off;
server_tokens off;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Regla de Re-escritura de Zope
Y defina la política de virtual host del sitio, con el siguiente comando:
# vim /etc/nginx/sites-available/canaima-proyecto
Agregue la siguiente configuración:
server {
# DNS/IP y Puerto en que escucha la aplicación
listen <DNS/IP>:80;
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Instalar y configurar Servidor Web Nginx 2
# Nombre del servidor
server_name canaima.softwarelibre.gob.ve;
# Tamaña máximo de subida de archivos
client_max_body_size 24M;
# Tamaña máximo de buffer de archivos
client_body_buffer_size 128K;
# Archivo de registro de acceso del sitio web
access_log /var/log/nginx/canaima-proyecto.access.log;
# Archivo de registro de error del sitio web
error_log /var/log/nginx/canaima-proyecto.error.log error;
# Interfaz Administrativa de Zope
location /manage {
proxy_pass http://127.0.0.1:8080/VirtualHostBase/http/canaima.softwarelibre.gob.ve:80/manage_main/VirtualHostRoot/;
proxy_set_header Host $host;
}
# Sitio Proyecto Canaima
location / {
proxy_pass http://127.0.0.1:8080/VirtualHostBase/http/canaima.softwarelibre.gob.ve:80/su-id-del-sitio-plone/VirtualHostRoot/;
proxy_set_header Host $host;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}
Realice un enlace simbólico desde el directorio de Nginx sites-available/ al directorio sites-enabled/, para
que su configuración previa este disponible:
# ln -s /etc/nginx/sites-available/canaima-proyecto
/etc/nginx/sites-enabled/canaima-proyecto
Reinicie el servidor
Luego reinicie su servidor Nginx con el siguiente comando: # /etc/init.d/nginx reload
Servidor Web Apache2 y Zope
Instalar y configurar Servidor Web Apache2
Para instalar debe iniciar sesión como usuario "root" ejecute el siguiente comando: # aptitude
install apache2
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Servidor Web Apache2 y Zope 3
Habilitar módulos de mod_rewrite y mod_proxy
Próximo paso es habilitar mod_proxy y mod_rewrite.
Módulo mod_rewrite: Es usado como un motor de reescritura basado en reglas para reescribir
direcciones URL solicitadas en tiempo de ejecución, es decir le permite a usted apuntar a una
dirección URL en otra dirección URL.

Módulo mod_proxy Es un Proxy inverso que le permite apuntar a una dirección URL en otro
servidor en otro puerto. Este sirve como un traductor, para que el usuario nunca se comunique con
cualquier otro servicio que use otro puerto que no sea el 80, es decir es un intermediario transparente
hacia otro sitio. Con este módulo los usuarios pueden ir de Plone hacia una aplicación PHP, y luego a
una aplicación Java y nunca saberlo.

# a2enmod proxy
Enabling module proxy.
Run '/etc/init.d/apache2 restart' to activate new configuration!
...
# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
Luego puede editar la configuración del módulo mod_proxy, con el siguiente comando:
# vim /etc/apache2/mods-enabled/proxy.conf
Ahora, encontramos los siguientes ajustes y coinciden con lo que tengo aquí. Siga exactamente esto, o usted
podría terminar con teniendo un proxy abierto que permite a otros rebote a través de su máquina para llegar a
cualquier lugar que desee de forma anónima, enviar spam, etc. Hagas lo que hagas, nunca active su
ProxyRequests On.
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
#Deny from all
Allow from all
</Proxy>
Regla de Re-escritura de Zope
Y defina la política de virtual host del sitio, con el siguiente comando:
# vim /etc/apache2/sites-available/canaima-proyecto
Agregue la siguiente configuración:
<VirtualHost *:80>
ServerAlias canaima.softwarelibre.gob.ve
ServerAdmin webmaster@canaima.softwarelibre.gob.ve
ServerSignature On
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Habilitar módulos de mod_rewrite y mod_proxy 4
CustomLog /var/log/apache2/canaima-proyecto-access.log combined
ErrorLog /var/log/apache2/canaima-proyecto-error.log
LogLevel warn
# log the deflate compression rate to a file
#CustomLog /var/log/apache2/deflate_log deflate
<IfModule mod_rewrite.c>
RewriteEngine On
# use RewriteLog to debug problems with your rewrite rules
# disable it after you found the error our your harddisk will be filled *very fast*
# RewriteLog "/var/log/apache2/rewrite_log"
# RewriteLogLevel 2
# serving icons from apache 2 server
RewriteRule ^/icons/ - [L]
# rewrite any access to manage to a secure server
# RewriteRule ^/(.*)/manage(.*) \
# https://secure.example.org/zope/example_instance/example_org/$1/manage$2 [NC,R=301,L]
# RewriteRule ^/manage(.*) \
# https://secure.example.org/zope/example_instance/example_org/manage$1 [NC,R=301,L]
# rewrite any other access to the zope server using a proxy [P] and add the VMH magic keywords
# use %{SERVER_NAME} instead of example.com to avoid busting the ServerAlias
# %{HTTP_HOST} is bad because it may contain the port
RewriteRule ^/manage/(.*) \
http://localhost:8080/VirtualHostBase/http/%{SERVER_NAME}:80/manage_main/VirtualHostRoot/$1 [L,P]
RewriteRule ^/(.*) \
http://localhost:8080/VirtualHostBase/http/%{SERVER_NAME}:80/su-id-del-sitio-plone/VirtualHostRoot/$1 [L,P]
</IfModule>
<IfModule mod_proxy.c>
ProxyVia On
# prevent the webserver from beeing used as proxy
<LocationMatch "^[^/]">
Deny from all
</LocationMatch>
</IfModule>
# caching (disabled)
# this caches every file with the correct caching informations starting at /
<IfModule mod_mem_cache.c>
# CacheEnable mem /
</IfModule>
# compression (disabled)
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
</VirtualHost>
Realice un enlace simbólico desde el directorio de Apache2 sites-available/ al directorio sites-enabled/, para
que su configuración previa este disponible:
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Regla de Re-escritura de Zope 5
# ln -s /etc/apache2/sites-available/canaima-proyecto
/etc/apache2/sites-enabled/canaima-proyecto
A continuación, algunas configuraciones muy características:
Plone como un domino completo
Tener un nombre de host completo (es decir, todo bajo "/") que es servido por un único sitio Plone, añade
esto a su configuración de VirtualHost de Apache la siguiente configuración:
RewriteEngine On
RewriteRule ^/(.*)$ http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/su-id-del-sitio-plone/VirtualHostRoot/$1 [L,P]
Plone como una porción de su sitio
Alternativamente, usted podría mapear su sitio Plone dentro ed un sub-directorio de un sitio existente sin
subsumirlo como todo el sitio. ¿Para hacer esto hay es usar una regla de re-escritura ligeramente diferente?.
En primer lugar, lo mejor es crear un sitio Plone con un ID que coincida con el nombre de directorio en el
que desea que el sitio este publicado. Por ejemplo, si desea que la dirección URL de su sitio Plone sea así:
http://example.com/su-id-del-sitio-plone
Entonces debería crear su sitio Plone con el identificador su-id-del-sitio-plone. Para aparejar eso a este sitio
que se muestra cuando usted navega a la dirección http://example.com/su-id-del-sitio-plone, debe especificar
la reescritura de la siguiente forma:
RewriteEngine On
RewriteRule ^/su-id-del-sitio-plone($|/.*) http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/VirtualHostRoot/su-id-del-sitio-plone$1 [L,P]
Soporte HTTPS
Si usted quiere soportar acceso seguro HTTPS a su sitio Plone, es algo parecida la regla de reescritura
anterior para su VirtualHost. Cambie "http" a "https" y cambiar los números de puerto de "80" a "443", de
esta forma:
RewriteRule ^/(.*)$ http://127.0.0.1:8080/VirtualHostBase/https/%{SERVER_NAME}:443/VirtualHostRoot/$1 [L,P]
Reglas más elegantes
Si usted tiene necesidades mas exóticas, tome un tiempo y lea la página de Virtual Host Monster, y considere
tener a la mano el RewriteRule Witch, el cual es un generador de directivas RewriteRule de Apache para
Virtual Host en Zope.
Recomendaciones
Si tienes problemas raros con sus reglas, es recomendado activar el RewriteLog y alzar el •
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Plone como un domino completo 6
RewriteLogLevel a tu conveniencia, consulte la documentación de Mod_rewrite.
Reinicie el servidor
Luego reinicie su servidor Nginx con el siguiente comando: # /etc/init.d/apache2 reload
Demostración
Y pruebe su navegador la dirección http://canaima.softwarelibre.gob.ve/ y ya no mostrará el puerto de
publicación y el nombre de la aplicación ;)
Ver también
Zope Virtual Hosting Services •
Running Plone and Zope behind an Apache 2 web server •
Mapping the Virtual Host •
Referencias
Integración de Plone con el Servidor Web Nginx de la fundación CENDITEL. •
Proxy Apache a Zope •
Definir_Virtual_Host_y_Reescritura_de_Servidor_Web
Referencias 7