Назад | Перейти на главную страницу

конфиги для нескольких сайтов в apache с ssl

мне нужно защитить два разных сайта в 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 для каждого хоста, обычно работает всегда)