Configuración de Nginx HTTP como proxy inverso
Exponer OpenKM directamente desde Tomcat puede ser peligroso si necesita que la aplicación sea accesible desde Internet (por ejemplo https://issues.jboss.org/browse/JBAS-3861). Como consecuencia, podría infectarse con PerlBot. Además, el puerto 8080 puede estar bloqueado por un cortafuegos. Por estas razones, es una buena idea exponer su instalación de OpenKM a través del puerto web estándar 80. En los siguientes pasos se explica cómo configurar Apache para gestionar estas peticiones y reenviarlas al servidor de aplicaciones Tomcat mediante el protocolo AJP13.
De la documentación de Apache: el protocolo AJP13 está orientado a paquetes. Se eligió un formato binario en lugar del texto plano, más legible, presumiblemente por motivos de rendimiento. El servidor web se comunica con el contenedor de servlets mediante conexiones TCP. Para reducir el coste del proceso de creación de sockets, el servidor web intentará mantener conexiones TCP persistentes con el contenedor de servlets y reutilizar una conexión para varios ciclos de petición/respuesta.
IP interna frente a IP externa
Sección titulada «IP interna frente a IP externa»Se puede acceder a su OpenKM desde dos zonas distintas: Internet y la LAN. Esto significa que, para acceder a este servidor, necesita utilizar dos direcciones IP: una IP externa (Internet) y una IP interna (LAN).
La dirección IP interna (también conocida como “dirección IP local”) es la dirección que asigna el router de su red local y suele comenzar por 192.168.x.x. Estas direcciones IP solo pueden ser vistas por otros equipos de su red local (LAN) y no por ningún equipo conectado a una red externa como Internet.
Para llegar a Internet o a un equipo de otra red, a su equipo se le suele asignar una dirección IP externa, que puede utilizarse después para referirse al equipo en su red local.

En la imagen anterior hay tres equipos en la red local a los que el router ha asignado a cada uno su propia dirección IP interna. El ISP está conectado al router y le proporciona una dirección IP externa que le permite comunicarse con Internet. En Internet todo el mundo ve su dirección IP externa, pero cualquier información que llega desde el router se “convierte” de la dirección IP externa a la dirección IP interna.
Por tanto, si desea que su instalación de OpenKM sea accesible tanto desde la LAN como desde Internet, el truco consiste en configurar los equipos cliente para que resuelvan su IP interna (192.168.0.50) si están dentro de la LAN o la IP externa si están en Internet. Para resolver la IP de Internet (67.166.214.148), su equipo utiliza el DNS público. Por lo tanto, necesita configurar algún tipo de servidor DNS dentro de la LAN o modificar el fichero hosts de cada cliente para que resuelva a la IP interna.
Debian y Ubuntu
Sección titulada «Debian y Ubuntu»Lo primero es instalar el software necesario. En Debian/Ubuntu puede instalar Nginx con un único comando:
$ sudo apt-get install nginxAhora cree el fichero de configuración /etc/nginx/sites-available/openkm con este contenido:
$ vim /etc/nginx/sites-available/openkmserver { listen 80; server_name openkm.your-domain.com; # Avoid checking files size # client_max_body_size 0; rewrite ^/$ /openkm permanent; location /openkm/frontend/webSocket { proxy_pass http://localhost:8080/openkm/frontend/webSocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } location /openkm { proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080/openkm; }}Habilite esta configuración de sitio:
$ ln -s /etc/nginx/sites-available/openkm /etc/nginx/sites-enabled/Compruebe la configuración
Sección titulada «Compruebe la configuración»Reinicie Nginx:
$ sudo /etc/init.d/nginx restartCompruebe el acceso a su instalación de OpenKM desde http://openkm.your-domain.com/.
Red Hat y CentOS
Sección titulada «Red Hat y CentOS»Utilice el gestor de aplicaciones yum para instalar Nginx:
$ sudo yum install nginxHabilítelo en el arranque:
$ sudo chkconfig nginx --level 2345 onDependiendo de su versión de CentOS, la versión de Nginx puede ser demasiado antigua, por lo que es mejor instalarlo desde los repositorios de Nginx. Para ello, cree un fichero llamado /etc/yum.repos.d/nginx.repo e incluya una de estas configuraciones:
CentOS
[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=0enabled=1RedHat
[nginx]name=nginx repobaseurl=http://nginx.org/packages/rhel/$releasever/$basearch/gpgcheck=0enabled=1Ahora cree el fichero de configuración /etc/nginx/conf.d/openkm.conf con este contenido:
$ vim /etc/nginx/conf.d/openkm.confserver { listen 80; server_name openkm.your-domain.com; # Avoid checking files size # client_max_body_size 0; rewrite ^/$ /openkm/ permanent;
location /openkm/frontend/webSocket { proxy_pass http://localhost:8080/openkm/frontend/webSocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; }
location /openkm { proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080/openkm; }}Compruebe la configuración
Sección titulada «Compruebe la configuración»Reinicie Nginx:
$ sudo /etc/init.d/nginx restartCompruebe el acceso a su instalación de OpenKM desde http://openkm.your-domain.com/.
Si no puede acceder al puerto del servidor desde otras máquinas, revise la configuración de su cortafuegos. Para más información, lea How To Set Up a Basic iptables Firewall on CentOS 6.
Estos son varios comandos útiles relacionados con SELinux:
Obtener toda la configuración relacionada con HTTP
$ getsebool -a | grep httpdMás información en SELinux Booleans.