So I have this setup for my wordpress.
All servers run on Centos 7 MariaDB 10.4.17 Php-FPM 7.4 PHP 7.4 NginX
Server 1, the Front Load Balancing server Server 2-3-4 the wordpress application served with NginX Server 4 MariaDB
The Nginx loadbalance setup run fine with standard info.php on each of the server 2-3-4. They switch around using the round robin.
The wordpress on its own run fine on server 2-3-4. I have to change the site URL and home URL of the wordpress in the wp-options DB to reflect the ip address of the server. So for example if I'm testing wp server 2, the site url and home url is pointed to server 2.
The second I combined all of the servers 2-3-4 under the LB with the wordpress, I got this error "The page isn’t redirecting properly". I'm not quite sure whether there's a certain settings that needs to be done in order to make the WP works under the Nginx load balancer. Any advise is how to fix the issue? Please help?
My LB Nginx config.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
include /etc/nginx/conf.d/*.conf;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
root /var/www/wp;
sendfile on;
keepalive_timeout 65;
log_format upstreamlog '$server_name to : $upstream_addr [$request] '
'upstream_response_time $upstream_response_time '
'msec $msec request_time $request_time';
upstream big_server_com {
ip_hash;
server 192.168.1.32;
server 192.168.1.33;
server 192.168.1.34;
}
server {
server_name myserver.net wp.myserver.net;
#acces_log /var/log/nginx/access.log upstream.log;
location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
fastcgi_pass unix:/run/php-fpm/wp.sock;
fastcgi_index index.php;
proxy_pass http://big_server_com;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
try_files $uri $uri/ /index.php?$query_string;
}
index index.php;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/myserver.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/myserver.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_dhparam /etc/ssl/certs/dhparam.pem; # managed by Certbot
}
server {
if ($host = myserver.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = myserver.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name myserver.net wp.myserver.net;
return 404; # managed by Certbot
}
}
My Wordpress wp-config
<?php
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'admin' );
/** MySQL database password */
define( 'DB_PASSWORD', '*************' );
/** MySQL hostname */
define( 'DB_HOST', '192.168.1.34' );
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
/**#@-*/
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
/* That's all, stop editing! Happy publishing. */
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
NginX Configuration on the backend server
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
include /etc/nginx/conf.d/*.conf;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
root /var/www/wp;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 192.168.1.32:80;
server_name wp2.myserver.net;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/wp.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
try_files $uri $uri/ /index.php?$query_string;
}
index index.php;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}