мне нужно защитить два разных сайта в apache. Один из них должен быть прокси только для другого сервера, работающего на порту 8069.
Теперь один (который изначально включен в apache) работает с SSL:
<VirtualHost *:443>
ServerName 192.168.1.20
SSLEngine on
SSLCertificateFile /etc/ssl/erp/oeserver.crt
SSLCertificateKeyFile /etc/ssl/erp/oeserver.key
DocumentRoot /var/www/cloud
ServerPath /cloud/
#CustomLog /var/www/logs/ssl-access_log combined
#ErrorLog /var/www/logs/ssl-error_log
</VirtualHost>
Другой не запущен и даже не зарегистрирован. Когда я пытаюсь получить к нему доступ, я получаю исключение (ssl_error_rx_record_too_long):
<VirtualHost *:443>
ServerName 192.168.1.20
ServerPath /erp/
SSLEngine on
SSLCertificateFile /etc/ssl/erp/oeserver.crt
SSLCertificateKeyFile /etc/ssl/erp/oeserver.key
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
ProxyPass / http://127.0.0.1:8069/
ProxyPassReverse / http://127.0.0.1:8069
RewriteEngine on
RewriteRule ^/(.*) http://127.0.0.1:8069/$1 [P]
RequestHeader set "X-Forwarded-Proto" "https"
SetEnv proxy-nokeepalive 1
</VirtualHost>
Моя пожелание - следующая конфигурация:
192.168.1.20 ->> unsecured local path to website
192.168.1.20/cloud/ ->> secured local documentpath from cloud
192.168.1.20/erp/ ->> secured proxy on port 80 for http://192.168.1.20:8069
как это возможно? это вообще возможно? может быть, cloud.192.168.1.20 и erp.192.168.1.20 лучше ?!
Спасибо ============ РЕДАКТИРОВАТЬ ========================== apache2ctl -S -M: *: 443 - это сервер по умолчанию NameVirtualHost myserver (/etc/apache2/conf.d/cloud.conf:1) порт 443 namevhost myserver (/etc/apache2/conf.d/cloud.conf:1) *: 80 - сервер по умолчанию NameVirtualHost myserver (/ etc / apache2 / sites-enabled / default: 1) порт 80 имя vhost myserver (/ etc / apache2 / sites-enabled / default: 1)
дефолт:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Модифицированный (текущий) cloud.conf:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/openerp/oeserver.crt
SSLCertificateKeyFile /etc/ssl/openerp/oeserver.key
DocumentRoot /var/www/
RewriteCond {REQUEST_URI} ^/cloud$
RewriteEngine on
RewriteRule /(.*) http://127.0.0.1:8069/$1 [P]
RequestHeader set "X-Forwarded-Proto" "https"
SetEnv proxy-nokeepalive 1
</VirtualHost>
ты не можешь иметь
<VirtualHost *:443>
ServerName 192.168.1.20
SSLEngine on
2 раза, потому что apache будет привязываться только к одному виртуальному хосту.
почему бы не включить оба / location / в один конфиг?
<VirtualHost *:443>
ServerName 192.168.1.20
SSLEngine on
SSLCertificateFile /etc/ssl/erp/oeserver.crt
SSLCertificateKeyFile /etc/ssl/erp/oeserver.key
DocumentRoot /var/www/cloud
<Directory /var/www/cloud>
blah
</Directory>
# erp-config
# ... proxy_config ....
ProxyPass /erp http://127.0.0.1:8069/
proxyPassReverse /erp http://127.0.0.1:8069/
</VirtualHost>
Edit2
по-другому было бы 2 отдельных <VirtualHosts>
- конфиги, основанные на имени (один IP, должен быть доступен SNI) или на основе IP (один IP для каждого хоста, обычно работает всегда)