I've got this Apache2 site configuration, allowing me to "run Apache as a proxy" of the localhost:8080
service.
<VirtualHost *:80>
ServerName foo.mydomain.com
RedirectPermanent / https://foo.mydomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName foo.mydomain.com
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://upstream%{REQUEST_URI} [P,QSA,L]
<Proxy balancer://upstream>
# following directive generates the error
BalancerMember http://127.0.0.1:8080
</Proxy>
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
RequestHeader set X_FORWARDED_PROTO https
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile /etc/apache2/certs/foo.mydomain.com/host.pem
SSLCertificateKeyFile /etc/apache2/certs/foo.mydomain.com/host.key
ErrorLog ${APACHE_LOG_DIR}/error_foo_mydomain.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_foo_mydomain.log combined
</VirtualHost>
When I restart Apache2 with service apache2 restart
an error is returned.
Я видел, что проблема связана со следующей директивой:
BalancerMember http://127.0.0.1:8080
Если я прокомментирую эту строку, ошибка исчезнет и сервер будет запущен. Тем не менее прокси не работает. Синтаксис должен быть правильным, поэтому я точно не знаю, как решить эту проблему.
Конечно, оба модуля proxy
и proxy_balancer
включены.
Я нашел решение, позволяющее проксировать службу localhost: 8080
.
<VirtualHost *:80>
ServerName foo.mydomain.com
RedirectPermanent / https://foo.mydomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName foo.mydomain.com
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
SSLEngine on
SSLCertificateFile /etc/apache2/certs/foo.mydomain.com/host.pem
SSLCertificateKeyFile /etc/apache2/certs/foo.mydomain.com/host.key
ErrorLog ${APACHE_LOG_DIR}/error_foo_mydomain.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_foo_mydomain.log combined
</VirtualHost>