Wordpress za proxym na Apaczu
Posted on Thu 20 May 2021 in Linux • 1 min read
Zapisuję, żeby nie wymyślać drugi raz.
Są dwa serwery:
1. wordpress o adresie: 192.168.1.82 gdzie Apache serwuje pliki na porcie: 98
2. proxy: 192.168.1.80
Adres publiczny to np.: wp.aqq.pl
Na serwerze wordpress należy włączy moduł nagłówków:
sudo a2enmod headers
Pomijam proces wygenerowania certyfikatu, np. za pomocą certbota.
Konfiguracja serwera proxy:
<VirtualHost *:80> ServerName wp.aqq.pl Redirect / https://wp.aqq.pl/ </VirtualHost> <VirtualHost *:443> ServerName wp.aqq.pl SSLEngine on ProxyPreserveHost On ProxyRequests off SSLProxyEngine On Loglevel debug ProxyPass / http://192.168.1.82:98/ ProxyPassReverse / http://192.168.1.82:98/ SSLCertificateFile /etc/letsencrypt/live/wp.aqq.pl/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/wp.aqq.pl/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf <Location /> # mega ważne nagłówki RequestHeader set X-Forwarded-Proto âhttpsâ RequestHeader set X-Forwarded-Port â443â </Location> </VirtualHost>
Na serwerze wordpress trzeba zmienić konfigurację portw w Apache'u:
sudo vim /etc/apache2/ports.conf
i dodać linię z odpowiednim portem, tu: 98
Listen 98
Konfiguracja wordpresa:
<VirtualHost *:98> ServerName 192.168.0.82 php_flag default_charset utf8 ServerAdmin admin@wp.aqq.pl ServerPath /var/www/html/wp.aqq.pl DocumentRoot /var/www/html/wp.aqq.pl/ ErrorLog ${APACHE_LOG_DIR}/wp.aqq.pl-error.log TransferLog ${APACHE_LOG_DIR}/wp.aqq.pl-transfer.log <Directory /var/www/html/wp.aqq.pl> AllowOverride All Options +FollowSymlinks </Directory> </VirtualHost>
To nie koniec zabawy.
W konfiguracji Wordpressa też trzeba coś zmienić, a konkretnie w pliku:
sudo vim /var/www/html/wp.aqq.pl/wp-config.php
dodać poniższe linie:
define('FORCE_SSL_ADMIN', true); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';