Да вообще в целом для nginx - это не проблема.
Vesta по моему пока так не может. Вся суть в том, что apache не умеет 2 virtualhost на одном IP с разными SSL сертификатами, а nginx умеет.
Соответственно, в идеале, все что нам нужно это - добавить в апаче обычный VirtualHost, а в nginx хост с SSL и правильным проксированием.
Я сделал немного сложнее и в обход панели.
1. Добавил в apache Listen с новым портом
Code: Select all
/etc/httpd/conf.d/82.196.1.21.conf
Listen 127.0.0.1:8443
2. В /home/admin/conf/web/shttpd.conf к уже существующему <ip>:8443 хосту (корневой домен со своим сертификатом) - добавил
Code: Select all
<VirtualHost 127.0.0.1:8443>
ServerName cloud.quaded.com
ServerAlias www.cloud.quaded.com
ServerAdmin [email protected]
DocumentRoot /home/admin/web/cloud.quaded.com/public_html
ScriptAlias /cgi-bin/ /home/admin/web/cloud.quaded.com/cgi-bin/
Alias /vstats/ /home/admin/web/cloud.quaded.com/stats/
Alias /error/ /home/admin/web/cloud.quaded.com/document_errors/
SuexecUserGroup admin admin
CustomLog /var/log/httpd/domains/cloud.quaded.com.bytes bytes
CustomLog /var/log/httpd/domains/cloud.quaded.com.log combined
ErrorLog /var/log/httpd/domains/cloud.quaded.com.error.log
<Directory /home/admin/web/cloud.quaded.com/public_html>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
</Directory>
<Directory /home/admin/web/cloud.quaded.com/stats>
AllowOverride All
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile /home/admin/conf/web/ssl.cloud.quaded.com.crt
SSLCertificateKeyFile /home/admin/conf/web/ssl.cloud.quaded.com.key
SSLCertificateChainFile /home/admin/conf/web/ssl.cloud.quaded.com.ca
<IfModule mod_ruid2.c>
RMode config
RUidGid admin admin
RGroups apache
</IfModule>
<IfModule itk.c>
AssignUserID admin admin
</IfModule>
Include /home/admin/conf/web/shttpd.cloud.quaded.com.conf*
</VirtualHost>
3. В /home/admin/conf/web/snginx.conf добавил vhost с заданными ssl сертификатами и проксированием не стандартного <ip>:8443 apache vhosta, а новосозданного 127.0.0.1:8443
Code: Select all
server {
listen 443;
server_name cloud.quaded.com;
ssl on;
ssl_certificate /home/admin/conf/web/ssl.cloud.quaded.com.pem;
ssl_certificate_key /home/admin/conf/web/ssl.cloud.quaded.com.key;
error_log /var/log/httpd/domains/cloud.quaded.com.error.log error;
location / {
proxy_pass https://127.0.0.1:8443;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp|odf|tar|bmp|rtf|js|mp3|avi|mpeg|flv|html|htm)$ {
root /home/admin/web/cloud.quaded.com/public_html;
access_log /var/log/httpd/domains/cloud.quaded.com.log combined;
access_log /var/log/httpd/domains/cloud.quaded.com.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
location /error/ {
alias /home/admin/web/cloud.quaded.com/document_errors/;
}
location @fallback {
proxy_pass https://127.0.0.1:8443;
}
location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}
}
Реализация довольно кривая и сложная, я создал и в apache - ssl хост, якобы на втором IP, и в nginx. Хотя в идеале - Vhost apache должен остаться на стандартном порту (без SSL), а nginx в силу своей мощи и умения держать на одном IP/порту несколько разных сертификатов будет распедаливать все.
Я думаю если немного поразкинуть мозгом - можно подкрутить стандартные templates конфигов апача и делать все это сразу через панель.