WordPress

multisite – WordPress wp-admin przekierowanie do aws lb

  • 24 lipca, 2024
  • 3 min read
multisite – WordPress wp-admin przekierowanie do aws lb


Umieściliśmy WordPress na instancji AWS EC2 (prywatna podsieć) i podłączyliśmy ją do modułu równoważenia obciążenia aplikacji AWS (dostępnego do Internetu), a następnie do AWS Cloud Front. Nasza witryna internetowa jest skierowana do AWS Cloud Front.

Żądania wyglądają następująco: Użytkownik –> www.example.in –> AWS Cloud Front –> AWS ALB –> Instancja AWS EC2.

W module równoważenia obciążenia aplikacji mamy jednego słuchacza z dwiema regułami.

słuchacz z portem 80 i przekierowaniem do reguł zaplecza (reguła domyślna i inna reguła /blogs/*)

Nasz WordPress znajduje się pod adresem /var/www/html/blogs.

Zatem za każdym razem, gdy użytkownik wchodzi na www.example.in, wszystko działa prawidłowo, www.example.in/blogs/ również działa prawidłowo, ale gdy próbujemy uzyskać dostęp do www.example.in/blogs/wp-admin, następuje przekierowanie do modułu równoważenia obciążenia aplikacji.

Hmmm… nie można uzyskać dostępu do tej strony alb-example-app-lb-xxxxxxxxx.us-east-1.elb.amazonaws.com odmówił połączenia

Przeczytałem jedno z rozwiązań, że jeśli dodamy wiele zachowań, to zadziała, nawet ja próbowałem, ale nic nie działa.

według mojej wiedzy musimy dodać jedno zachowanie domyślne i inne zachowanie dla /blogs/*, a następnie powinno to dotyczyć wszystkich podfolderów i plików.

Warto przeczytać!  Usuń post, jeśli istnieje według tytułu

wpisz tutaj opis obrazka

Plik .htaccess do przekierowania

[root@ip-10-0-2-194 blogs]# cat .htaccess
# BEGIN WordPress Multisite
# Using subfolder network type: 

# Let apache know we're behind a SSL reverse proxy
SetEnvIf X-Forwarded-Proto "https" HTTPS=on

# Redirect to HTTPS
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /blogs/
RewriteRule ^index\.php$ - [L]

# Add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . /blogs/index.php [L]

</IfModule>
# END WordPress Multisite

[root@ip-10-0-2-194 blogs]# 

dodałem te wiersze do wp-config.php.

define('WP_HOME', '
define('WP_SITEURL', '

//Begin Really Simple SSL Load balancing fix
$server_opts = array("HTTP_CLOUDFRONT_FORWARDED_PROTO" => "https", "HTTP_CF_VISITOR"=>"https", "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_FORWARDED_SSL"=>"on", "HTTP_X_FORWARDED_SSL"=>"1");
foreach( $server_opts as $option => $value ) {
if ((isset($_ENV["HTTPS"]) && ( "on" == $_ENV["HTTPS"] )) || (isset( $_SERVER[ $option ] ) && ( strpos( $_SERVER[ $option ], $value ) !== false )) ) {
$_SERVER[ "HTTPS" ] = "on";
}
}
//END Really Simple SSL

nawet zaktualizowaliśmy naszą bazę danych o siteurl i home.

MariaDB [wordpress]> SELECT option_name, option_value FROM wp_options WHERE option_name="siteurl" OR option_name="home";
+-------------+-----------------------------------+
| option_name | option_value                      |
+-------------+-----------------------------------+
| home        |  |
| siteurl     |  |
+-------------+-----------------------------------+
2 rows in set (0.000 sec)

MariaDB [wordpress]> 

utworzyliśmy certyfikat z rozszerzeniem *.example.in www.example.in i dołączyliśmy go do chmury AWS.

Warto przeczytać!  Jak stworzyć własny, niestandardowy krótki adres URL dla swojego bloga

Naszym celem końcowym jest uzyskanie dostępu do strony wp-admin z naszej domeny. Kiedy klikniemy www.example.in/blogs/wp-admin, musimy uzyskać stronę logowania i móc się zalogować.


Źródło