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';