{"id":664,"date":"2012-05-14T13:10:26","date_gmt":"2012-05-14T19:10:26","guid":{"rendered":"http:\/\/www.lastdragon.net\/?p=664"},"modified":"2012-05-14T13:25:57","modified_gmt":"2012-05-14T19:25:57","slug":"nginx-vs-apache-con-php","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=664","title":{"rendered":"Nginx vs Apache con PHP"},"content":{"rendered":"<p>A pesar de lo pretensioso que se lee nginx vs apache he estado haciendo pruebas a estos 2 servidores WEB y el resultado podr\u00eda no ser tan favorable para Nginx<\/p>\n<p>Mi opini\u00f3n con NginX es como la de Qmail, fue una moda creada  debido a que muchos les gusta adoptar soluciones que no son propias para el proyecto. por ejemplo muchos Sendmail fueron sustituidos por Qmail hace unos 15 a\u00f1os \u00bfpor que? \u00bfpor que Sendmail no hacia bien su trabajo? no. El asunto era por que hotmail usaba en sus servidores de correo Qmail.<\/p>\n<p>Asi paso con GNU\/Linux, muchos Linux fueron sustituidos por FreeBSD solo por que yahoo y otros portales de la \u00e9poca usaban FreeBSD como OS y asi hay varios ejemplos.<\/p>\n<p>Como modas que son terminaron pasando y las aguas volvieron a su cauce y todo de nuevo normal.<\/p>\n<p>Actualmente veo que existe mucho movimiento con el NginX , incluso he visto comparaciones tramposas donde un Apache cargado con N cantidad de m\u00f3dulos es puesto a competir contra un Nginx que solo sirve paginas HTML, no PHP, no ASPX, no perls, no cgis, NADA!!! es una comparaci\u00f3n un poco injusta ya que si liberamos a apache de la carga modular sin duda podr\u00eda comportarse como un Nginx o incluso mejor. pero mejor un poco de detalle<\/p>\n<p><strong>NginX<\/strong><\/p>\n<p>Es un ligero servidor WEB con pocas funcionalidades y las que tiene son delegadas como la ejecuci\u00f3n de PHP, una delegaci\u00f3n que tiene problemas de seguridad<\/p>\n<p>Delegaci\u00f3n de PHP<\/p>\n<p>No tiene un modulo de PHP que trabaje directamente la interpretaci\u00f3n del PHP se tiene que delegar a un proceso externo del PHP con el m\u00e9todo de<br \/>\nFPM (FastCGI Process Manager)<\/p>\n<p>es un FastCGI pero orientado a sesi\u00f3n de red, como las X de X-Windows, donde un programa no accede directamente a la tarjeta de video sino entrega sus datos por red en localhost, as\u00ed mismo hace FPM.<\/p>\n<p>Esto tiene ciertas ventajas, por ejemplo es posible crear servidores y clusterizarlos para altar cargas de trabajo ya que podr\u00eda tener cientos de servidores WEB dedicados a ejecutar PHP como \u00fanico prop\u00f3sito dejando la parte de entrega de informaci\u00f3n solo al servidor WEB. <\/p>\n<p>Este m\u00e9todo tiene un alto costo de seguridad y de rendimiento cuando todo se ejecuta en una misma m\u00e1quina, no tiene sentido usar FPM si tanto el servidor WEB y el php se ejecutan en la maquina y se usan de forma local por que el acceso al FPM es atreves de conexi\u00f3n de red dando por lo tanto una latencia y causando los problemas que el X le causa al entorno grafico pero en este caso en el despacho de p\u00e1ginas WEB.<\/p>\n<p>Que nos da a cambio, el proceso es independiente y el que un proceso PHP se bloquee no afecta de ninguna forma al servidor WEB aunque esto no es del todo una ventaja y pronto cuando le toque a Apache comparare estos p\u00e1rrafos, a lo mucho su ventaja se limita a protecci\u00f3n de memoria, es decir. Tener un usuario para el servidor WEB y un usuario para el PHP de forma que si un Script en PHP es vulnerable no pueda afectar de ninguna forma a otros sitios archivos alojados en el servidor. Por lo que si incrementa la seguridad cuando de PHP se trata sin embargo deja una vulnerabilidad en el servidor WEB<\/p>\n<p>Volviendo a NginX al delegar la parte PHP lo hace m\u00e1s liviano r\u00e1pido en si mismo pero lento en el cuello de botella al mandar por red los datos php y esperar la respuesta y su propia seguridad se entrega como pago Nginx y PHP en la misma maquina no tiene sentido y el costo de seguridad es alto y la supuesta velocidad ganada se pierde en el cuello de botella de la sesi\u00f3n de red<\/p>\n<p>NginX no cuenta pr\u00e1cticamente con ning\u00fan modulo, solo tiene funciones b\u00e1sicas de rewrite y ssl por lo que toda la configuraci\u00f3n incluso la de las maquinas virtuales se puede hacer en poquito m\u00e1s de 50 l\u00edneas<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 user&nbsp; web;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 worker_processes&nbsp; 1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 events {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nworker_connections&nbsp; 1024;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 http {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\ninclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mime.types;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp;&nbsp; default_type&nbsp;<br \/>\napplication\/octet-stream;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 12<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 13&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nsendfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 14<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 15&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nkeepalive_timeout&nbsp; 65;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 16<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp;&nbsp; server {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nlisten&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server_name&nbsp;<br \/>\nlocalhost;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 20<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location \/ {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nroot&nbsp;&nbsp; \/usr\/ngix1.2.0\/exechtml;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nindex&nbsp; index.html index.htm;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 25<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nerror_page&nbsp;&nbsp; 500 502 503 504&nbsp; \/50x.html;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location = \/50x.html<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nroot&nbsp;&nbsp; html;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 30<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 31&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 32<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 33<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp;&nbsp; server {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nlisten&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server_name&nbsp;<br \/>\nlastdragon.net&nbsp; alias&nbsp; www.lastdragon.net;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 37<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location \/ {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nroot&nbsp;&nbsp; \/paginas\/lastdragon\/html;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nindex&nbsp; index.html index.php;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 42<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~<br \/>\n\\.php$ {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_pass&nbsp;&nbsp; 127.0.0.1:9000;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_index&nbsp; index.php;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_param&nbsp; SCRIPT_FILENAME&nbsp;<br \/>\n\/paginas\/lastdragon\/html\/$fastcgi_script_name;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\ninclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_params;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 49<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location&nbsp;<br \/>\n\/wp-admin&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nauth_basic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n.Restricted.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nauth_basic_user_file&nbsp; \/.htaccess;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 53<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <\/p>\n<p><strong>Apache Web Server<\/strong><\/p>\n<p>Apache es un servidor WEB maduro y poderoso tal poder requiere de modularizar funciones, sin embargo esta caracter\u00edstica modular le permitir\u00eda quitarse todos los m\u00f3dulos que le dan poder y ser robusto y quedar tan liviano o mas que el NginX un Apache compilado sin pr\u00e1cticamente nada da el mismo resultado que NginX en rendimiento pero realmente nadie quiere quitarle esas funcionalidades al Apache, seria absurdo, la seguridad del sitio est\u00e1 en esos m\u00f3dulos que de hecho no lo hacen tan lento como para justificar una migraci\u00f3n a NginX o a otro servidor WEB<\/p>\n<p>Apache WEB Server con PHP<\/p>\n<p>Apache de la serie 1.3.X pod\u00eda compilarse con el PHP incrustado, era parte del c\u00f3digo de PHP esto lo hac\u00eda verdaderamente r\u00e1pido ya que incluso la parte PHP estaba en RAM junto con la parte del servidor WEB, es posible que nunca haya sido mas r\u00e1pido el PHP y Apache como en esa serie. Sin embargo en la serie 2.X.X se reescribi\u00f3 Apache y el PHP tuvo que funcionar \u00fanicamente como un modulo, sin embargo el modulo aun siendo c\u00f3digo externo al cargarse queda en RAM y todos sabemos que dentro de la PC la RAM y el CPU son u\u00f1a y mugre por lo tanto, unos cuantos punteros y se mueve informaci\u00f3n tan r\u00e1pido como no se puede hacer por ning\u00fan otro medio, al estar cargado PHP en RAM el apache solo tiene que enviar por RAM y los datos del Script PHP y esperar por RAM la respuesta del PHP algo realmente r\u00e1pido ya que no existe la latencia de bajar estos movimientos a la capa de Red del sistema operativo como todos sabemos m\u00e1s capaz en el proceso significan mayor latencia al tener que atravesar capa por capa.<\/p>\n<p>Cuando de PHP se habla la carga de los m\u00f3dulos adicionales de PHP se ve amortiguada en cuanto a la rapidez y flujo de ejecuci\u00f3n de PHP , lo inverso en NginX su velocidad adicional se ve mermada al pasar por las capas de Red y ni siquiera hablamos de que termina los datos en UDP, no se\u00f1or. TCP con todo y el ritual de sesi\u00f3n que eso involucra porque TCP se requiere por seguridad<\/p>\n<p>Aunque de forma simple el PHP configurado en Apache usa la misma memoria que Apache, esto nos deja un poco vulnerables con un Script PHP mal hecho, sin embargo se pueden aplicar otros medios de seguridad e incluso asignarle por c\u00f3digo un usuario diferente al ejecutar el PHP aunque pr\u00e1cticamente ning\u00fan programador hace eso y deja la seguridad del lado del administrador del servidor.<\/p>\n<p>Un servidor WEB Apache con algunos m\u00f3dulos b\u00e1sicos son por mucho mas de 100 l\u00edneas, son tantas que incluso la configuraci\u00f3n debe ser modular con un archivo para los Vhost , otro para SSL, otro para el manejo de sesiones TCP tanto al menos unas 150 l\u00edneas de configuraci\u00f3n repartidas en varios archivos, esta complejidad que de hecho no lo es tanto nos da como recompensa un sitio mas seguro<\/p>\n<p>El siguiente httpd.conf no incluye los m\u00f3dulos .conf de vhost pero ni ssl pero sera suficiente para probar el punto.<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp; 1 ServerRoot &#8220;\/usr\/apache2.4.2&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 Listen 80<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 LoadModule authn_file_module<br \/>\nmodules\/mod_authn_file.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 LoadModule authn_core_module<br \/>\nmodules\/mod_authn_core.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 LoadModule authz_host_module<br \/>\nmodules\/mod_authz_host.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 LoadModule authz_groupfile_module<br \/>\nmodules\/mod_authz_groupfile.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 LoadModule authz_user_module<br \/>\nmodules\/mod_authz_user.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 10 LoadModule authz_core_module<br \/>\nmodules\/mod_authz_core.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 11 LoadModule access_compat_module<br \/>\nmodules\/mod_access_compat.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 12 LoadModule auth_basic_module<br \/>\nmodules\/mod_auth_basic.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 13 LoadModule socache_shmcb_module<br \/>\nmodules\/mod_socache_shmcb.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 14 LoadModule socache_dbm_module<br \/>\nmodules\/mod_socache_dbm.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 15 LoadModule reqtimeout_module<br \/>\nmodules\/mod_reqtimeout.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 16 LoadModule filter_module<br \/>\nmodules\/mod_filter.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 17 LoadModule mime_module modules\/mod_mime.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 18 LoadModule log_config_module<br \/>\nmodules\/mod_log_config.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 19 LoadModule env_module modules\/mod_env.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 20 LoadModule headers_module<br \/>\nmodules\/mod_headers.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 21 LoadModule setenvif_module<br \/>\nmodules\/mod_setenvif.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 22 LoadModule version_module<br \/>\nmodules\/mod_version.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 23 LoadModule ssl_module modules\/mod_ssl.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 24 LoadModule unixd_module modules\/mod_unixd.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 25 LoadModule status_module<br \/>\nmodules\/mod_status.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 26 LoadModule autoindex_module<br \/>\nmodules\/mod_autoindex.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 27 LoadModule dir_module modules\/mod_dir.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 28 LoadModule alias_module modules\/mod_alias.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 29 LoadModule<br \/>\nphp5_module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modules\/libphp5.so<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 30<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 31 &lt;IfModule unixd_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 32 User web<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 33 Group web<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 34<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 35 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 36<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 37 ServerAdmin you@example.com<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 38<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 39 &lt;Directory \/&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 40&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride none<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 41&nbsp;&nbsp;&nbsp;&nbsp; Require all denied<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 42 &lt;\/Directory&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 43<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 44 DocumentRoot &#8220;\/usr\/apache2.4.2\/htdocs&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 45 &lt;Directory &#8220;\/usr\/apache2.4.2\/htdocs&#8221;&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 46&nbsp;&nbsp;&nbsp;&nbsp; Options Indexes<br \/>\nFollowSymLinks<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 47&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride None<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 48&nbsp;&nbsp;&nbsp;&nbsp; Require all granted<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 49 &lt;\/Directory&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 50<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 51 &lt;IfModule dir_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 52&nbsp;&nbsp;&nbsp;&nbsp; DirectoryIndex<br \/>\nindex.html index.php<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 53 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 54<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 55 &lt;Files &#8220;.ht*&#8221;&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 56&nbsp;&nbsp;&nbsp;&nbsp; Require all denied<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 57 &lt;\/Files&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 58<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 59 ErrorLog &#8220;logs\/error_log&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 60<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 61 LogLevel warn<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 62<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 63 &lt;IfModule log_config_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 64&nbsp;&nbsp;&nbsp;&nbsp; LogFormat &#8220;%h %l %u<br \/>\n%t \\&#8221;%r\\&#8221; %&gt;s %b \\&#8221;%{Referer}i\\&#8221; \\&#8221;%{User-Agent}i\\&#8221;&#8221; combined<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 65&nbsp;&nbsp;&nbsp;&nbsp; LogFormat &#8220;%h %l %u<br \/>\n%t \\&#8221;%r\\&#8221; %&gt;s %b&#8221; common<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 66<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp;&nbsp; &lt;IfModule<br \/>\nlogio_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nLogFormat &#8220;%h %l %u %t \\&#8221;%r\\&#8221; %&gt;s %b \\&#8221;%{Referer}i\\&#8221;<br \/>\n\\&#8221;%{User-Agent}i\\&#8221; %I %O&#8221; combinedio<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 69&nbsp;&nbsp;&nbsp;&nbsp; &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 70<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 71&nbsp;&nbsp;&nbsp;&nbsp; CustomLog<br \/>\n&#8220;logs\/access_log&#8221; common<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 72<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 73 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 74<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 75 &lt;IfModule alias_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp; ScriptAlias<br \/>\n\/cgi-bin\/ &#8220;\/usr\/apache2.4.2\/cgi-bin\/&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 77<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 78 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 79<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 80 &lt;IfModule cgid_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 81 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 82<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 83 &lt;Directory &#8220;\/usr\/apache2.4.2\/cgi-bin&#8221;&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 84&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride None<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 85&nbsp;&nbsp;&nbsp;&nbsp; Options None<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 86&nbsp;&nbsp;&nbsp;&nbsp; Require all granted<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 87 &lt;\/Directory&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 88<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 89 &lt;IfModule mime_module&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 90&nbsp;&nbsp;&nbsp;&nbsp; TypesConfig<br \/>\nconf\/mime.types<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 91&nbsp;&nbsp;&nbsp;&nbsp; AddType<br \/>\napplication\/x-compress .Z<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 92&nbsp;&nbsp;&nbsp;&nbsp; AddType<br \/>\napplication\/x-gzip .gz .tgz<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 93&nbsp;&nbsp;&nbsp;&nbsp; AddType<br \/>\napplication\/x-httpd-php .php<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 94<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 95 &lt;\/IfModule&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 96<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 97 # Virtual hosts<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 98 Include conf\/extra\/httpd-vhosts.conf<\/p>\n<p>El siguiente video muestra como esas 2 configuraciones pueden ser un detrimento de seguridad en el caso de NginX<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/GNMY0DBB0Nk\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>\u00bfPor que NginX falla en algo tan simple?<\/p>\n<p>El problema est\u00e1 en la delegaci\u00f3n de responsabilidad en la zona de configuraci\u00f3n<\/p>\n<p>&nbsp;43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location<br \/>\n~ \\.php$ {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_pass&nbsp;&nbsp; 127.0.0.1:9000;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_index&nbsp; index.php;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nfastcgi_param&nbsp; SCRIPT_FILENAME&nbsp;<br \/>\n\/paginas\/lastdragon\/html\/$fastcgi_script_name;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\ninclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_params;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p>Esta linea rompe con la seguridad, debido a que se le dice protege esta carpeta..<\/p>\n<p>&nbsp;50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location&nbsp;<br \/>\n\/wp-admin&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nauth_basic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n.Restricted.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nauth_basic_user_file&nbsp; \/.htaccess;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; 53<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p>y al PHP se le dice ejecuta despues de esta carpeta y wp-admin esta despues de esa carpeta<\/p>\n<p>fastcgi_param  SCRIPT_FILENAME  \/paginas\/lastdragon\/html\/fastcgi_script_name<\/p>\n<p>En la parte de PHP le dice ejecuta todo despu\u00e9s de este punto, al no estar coordinados el NginX protege su carpeta pero el PHP no sabe que NginX no quiere que se ejecute nada despu\u00e9s de esa carpeta si no se da primero las credenciales correctas esto es porque el PHP no es parte del NginX es un proceso delegado, en apache no ocurre por que tanto el Apache como el PHP son el mismo proceso y por lo tanto PHP sabe que Apache no desea que ning\u00fan dato se lea de la carpeta<\/p>\n<p>Todas las delegaciones como la de PHP tendr\u00e1n como resultado hoyos en la seguridad<\/p>\n<p>Y sin embargo a m\u00ed se me hace un error fatal que NginX permita la ejecuci\u00f3n incluso como un delegado porque finalmente la solicitud de ejecuci\u00f3n viene del navegador y la recibe el NginX, esto me dice que el NginX tiene poco c\u00f3digo pero que esta programado por con las patas. Tan simple que ser\u00eda no entregarle la ejecuci\u00f3n al PHP-FPM<\/p>\n<p><strong>Como esta hoy el mundo de los servidores WEB<\/strong><\/p>\n<p>Apache nunca ha dejado de ser el rey indiscutido, esto es debido a que los administradores saben que es una gran pieza a la hora de despachar paginas WEB incluso si por seguridad debe cargar con m\u00f3dulos, en el 2007 Internet Information Server estuvo muy cerca de Apache como nunca antes un servidor WEB lo estuvo, sin embargo despu\u00e9s del 2008 la gente perdi\u00f3 el inter\u00e9s y regreso a Apache.<\/p>\n<p>Esto nos da muchos diagn\u00f3sticos, aunque apache puede ejecutar .NET y ASPX con Mono, la realidad es que muy pocos sitios usan .NET porque su plataforma nativa es Windows con IIS y es obvio que si el total de IIS es m\u00ednima entonces los sitios con ASPX tambi\u00e9n son m\u00ednimos.<\/p>\n<p>Por lo que en PHP vs (.NET C# ASPX)<\/p>\n<p>PHP le pone una brutal paliza a .NET en el \u00e1rea de p\u00e1ginas WEB<\/p>\n<p>Esta es la grafica de c\u00f3mo se ve\u00eda la guerra de servidores web en hace unos a\u00f1os<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/webserversfeb09.png\" alt=\"\" width=\"425\" height=\"350\" \/><br \/>\n<a href=\"https:\/\/www.lastdragon.net\/misarchivos\/webserversfeb09.png\">Ver mas grande<\/a><\/p>\n<p>Y as\u00ed se ve hoy en el 2012-05-14<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/webserversmay2012.png\" alt=\"\" width=\"425\" height=\"350\" \/><br \/>\n<a href=\"https:\/\/www.lastdragon.net\/misarchivos\/webserversmay2012.png\">Ver mas grande<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A pesar de lo pretensioso que se lee nginx vs apache he estado haciendo pruebas a estos 2 servidores WEB y el resultado podr\u00eda no ser tan favorable para Nginx Mi opini\u00f3n con NginX es como la de Qmail, fue una moda creada debido a que muchos les gusta adoptar soluciones que no son propias&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,1],"tags":[],"class_list":["post-664","post","type-post","status-publish","format-standard","hentry","category-en-la-opinion-de","category-personal"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=664"}],"version-history":[{"count":0,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/664\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}