
Also habe ich dieses Setup für mein WordPress.
Alle Server laufen auf Centos 7 MariaDB 10.4.17 Php-FPM 7.4 PHP 7.4 NginX
Server 1, der Front Load Balancing Server Server 2-3-4 die WordPress-Anwendung, die mit NginX betrieben wird Server 4 MariaDB
Das Nginx-Loadbalance-Setup läuft mit Standard-info.php auf jedem der Server 2-3-4 einwandfrei. Sie wechseln im Round Robin-Verfahren.
WordPress selbst läuft auf Server 2-3-4 einwandfrei. Ich muss die Site-URL und die Home-URL von WordPress in der WP-Options-Datenbank ändern, um die IP-Adresse des Servers widerzuspiegeln. Wenn ich also beispielsweise WP-Server 2 teste, zeigen die Site-URL und die Home-URL auf Server 2.
Als ich alle Server 2-3-4 unter dem LB mit WordPress kombinierte, bekam ich diesen Fehler „Die Seite wird nicht richtig umgeleitet“. Ich bin mir nicht ganz sicher, ob bestimmte Einstellungen vorgenommen werden müssen, damit WP unter dem Nginx-Load Balancer funktioniert. Gibt es einen Rat, wie man das Problem beheben kann? Bitte helfen Sie mir?
Meine LB Nginx-Konfiguration.
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
}
}
Meine 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-Konfiguration auf dem 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;
}
}
}