Cómo instalar un certificado SSL / TLS para WordPress con Apache usando un proxy inverso Nginx en un CentOS VPS |

Nginx y Apache son los servidores web de código abierto más populares, utilizados incluso por sitios web que generan grandes cantidades de tráfico. En este tutorial mostramos cómo utilizar ambos servidores web, pero con diferentes funciones. El servidor web Apache ejecuta el sitio web de WordPress detrás del servidor Nginx (con el certificado SSL instalado) que actúa como un proxy inverso para el servidor Apache. En este caso, Nginx se utiliza como un proxy inverso, procesando todas las conexiones SSL en nombre de Apache, mientras que Apache sigue siendo el servidor web. Este es uno de los muchos usos de Nginx como proxy inverso.
Por lo tanto, todas las conexiones URL de los navegadores de los usuarios acceden primero al servidor proxy inverso Nginx y deben estar en el protocolo HTTPS utilizando el certificado SSL instalado en el servidor. Luego, Nginx reenvía todas las solicitudes al servidor web Apache que ejecuta el sitio de WordPress. Por lo tanto, es muy importante configurar ambos servidores para monitorear diferentes puertos para evitar conflictos.
> Este tutorial muestra cómo instalar el certificado SSL en Nginx Reverse Proxy para el sitio web de WordPress alojado en el servidor web Apache.
Se supone que WordPress y Apache están instalados, configurados y funcionando correctamente en un servidor Linux CentOS 7.
Ejecute los comandos para instalar el servidor Nginx
$ sudo yum install epel-release $ sudo yum install nginx
Edite el archivo de configuración de Apache
$ sudo vim /etc/httpd/conf/httpd.conf
Cambie el puerto de escucha a otro puerto (por ejemplo, 8080) editando la línea de la siguiente manera.
Listen 8080
Esto es para evitar que Nginx escuche en el mismo puerto que Apache ahora nginx listens to port 80
tiempo apache listens to port 8080
.
Abra el puerto 8080 en el firewall:
$ sudo firewall-cmd --permanent --add-port=8080/tcp $ sudo firewall-cmd --reload
Reinicie el servicio Apache
$ sudo systemctl restart httpd
Iniciar y activar nginx
$ sudo systemctl start nginx $ sudo systemctl enable nginx
Asegúrese de que nginx funcione correctamente mostrando el nombre y la versión de curl en los encabezados HTTP
$ curl -I http://localhost
Comente toda la sección en la parte del servidor https (ssl)
# Settings for a TLS Enabled Server
Primero, cree los directorios nginx y privados de la siguiente manera
$ sudo mkdir -p /etc/pki/nginx/private
Luego genera claves:
$ sudo openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout /etc/pki/nginx/private/server.key -out /etc/pki/nginx/server.crt
Nota especial: asegúrese de que el puerto 443 esté permitido a través del firewall de la siguiente manera:
$ sudo firewall-cmd --permanent --add-port=443/tcp $ sudo firewall-cmd --reload
Debajo de la parte del servidor (http), la primera sección: reemplace la sección de ubicación con lo siguiente.
location / { try_files $uri @apache; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~/. { deny all; access_log off; log_not_found off; }
Bajo el servidor (https)
Parte – la segunda sección: reemplace la sección de ubicación con lo siguiente.
location / { try_files $uri @apache; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~/. { deny all; access_log off; log_not_found off; }
Vaya al sitio web de Mozilla Wiki para los conjuntos de cifrado recomendados> y agregue los conjuntos de cifrado a la sección de cifrado en la segunda sección del servidor (https).
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256' ;
Luego guarda el archivo:
Edite el archivo wp-config para habilitar la redirección a https agregando el siguiente código:
define('FORCE_SSL_ADMIN', true); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
$ sudo vim /var/www/html/wp-config.php
Guarda el archivo
Otorgue permisos para conexiones httpd y nginx a través de SELinux
$ sudo setsebool -P httpd_can_network_connect 1
Vaya al panel de wp-admin del sitio
Settings > General
, luego cambia el "http"
a "https"
para ambos "WordPress Address (URL)"
y "Site Address (URL)"
Y guarda los cambios
Forzar que todo el tráfico se redirija a https
Edite el archivo nginx.conf agregando la línea debajo del campo http server section
return 301 https://$server_name$request_uri;
Reinicie los servicios de Nginx y Apache
$ sudo systemctl restart nginx httpd
Ahora tenemos un sitio de WordPress con certificado SSL autofirmado como se muestra a continuación:
https://35.225.251.235
Ahora tiene un sitio web de WordPress completamente funcional con un certificado SSL. Aunque el servidor Nginx funciona como un proxy inverso, funciona de forma transparente y sin problemas con el servidor web Apache. Esto da la impresión de que las solicitudes se envían directamente al servidor web Apache. De hecho, es una de las formas más efectivas de mantener su sitio web seguro y reducir su vulnerabilidad a los piratas informáticos.
Si tiene problemas, comuníquese con el soporte de su proveedor de hosting web. Ellos deberían poder ayudarte. Si eso no es posible, Hosting mas Baratopuede recomendar los mejores proveedores de hosting de VPS, los mejores proveedores de hosting de WordPress y los mejores servicios de hosting de Linux (según lo que esté buscando). Las mejores selecciones en cada categoría son conocidas por brindar un excelente servicio y soporte al cliente.