У меня есть веб-сервер с двумя доменами, указывающими на один и тот же корень документа. У меня есть отдельные сертификаты SSL для двух доменов. Я хочу (почти) все, что приходит на сайты, работать под SSL. Все работает, но конфигурация, которая у меня есть, кажется слишком длинной и повторяющейся, и я подумал, могу ли я ее упростить?
Я проверил эти ответы: Настройка виртуальных хостов SSL в Apache, Apache: несколько виртуальных хостов с сертификатами SSL?, https://www.howtoforge.com/hosting-multiple-ssl-web-sites-on-one-ip-address-with-apache-2.2-and-gnutls-debian-lenny но, хотя и полезны, они, похоже, не совсем решали этот случай.
Мне было интересно, есть ли способ разбить конфигурацию на файлы, которые затем можно будет включить?
мой ports.conf:
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
сайты-доступные-по умолчанию:
<VirtualHost *:80>
ServerAdmin xx@yy.com
ServerName yy.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
# everything to run under ssl
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
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
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /geoserver http://localhost:8080/geoserver
ProxyPreserveHost On
ProxyStatus On
по умолчанию-ssl:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin xx@yy.com
ServerName yy.com:443
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}/ssl_access.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/yy.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/yy.com.key
# Server Certificate Chain:
SSLCertificateChainFile /etc/apache2/ssl/intermediate.crt
# Certificate Authority (CA):
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
# SSL Protocol Adjustments:
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Ssl.conf второго сайта:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin xx@zz.com
ServerName zz.com
ServerAlias www.zz.com
DocumentRoot /var/www
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/zz.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/zz.com.key
# Server Certificate Chain:
SSLCertificateChainFile /etc/apache2/ssl/zz.com/intermediate.crt
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>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Любая помощь приветствуется.
Мини
Так же, как я писал, я подумал, что должна быть функция включения :) Итак, я поискал ее (https://httpd.apache.org/docs/2.4/mod/core.html#include) и создали несколько отдельных файлов '.conf', которые я могу включить при необходимости. Итак, ssl.conf второго сайта теперь выглядит так:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin xx@zz.com
ServerName zz.com
ServerAlias www.zz.com
DocumentRoot /var/www
Include conf/cgi.conf
Include conf/proxy.conf
Include conf/ssl.conf
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/zz.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/zz.com.key
# Server Certificate Chain:
SSLCertificateChainFile /etc/apache2/ssl/zz.com/intermediate.crt
</VirtualHost>
</IfModule>
Теперь намного лучше и проще
Мини