Apache2 перенаправляет все запросы
У меня есть настройки Apache в AWS в частном VPC. Он настроен на обслуживание на 3 портах: 80, 443 и 1025.
Порт 80 только для перенаправления, мой.htaccess в /var/www/ выглядит так:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://my.domain.com/$1 [R=301,L]
Что работает нормально, все, что поступает на порт 80, перенаправляется на порт 443.
Порт 443 работает находка со своим сертификатом.
Проблема, которую я пытаюсь решить, состоит в том, чтобы отделить или отделить веб-сайт. Он будет обслуживать обычные веб-страницы в следующей структуре:
/var/www/[site-code-here]
но там есть каталог с именем /var/www/api
это не может быть открыто миру, но должно быть открыто через шлюз API AWS. Поэтому я создал 2 виртуальных хоста: один на порту 443 для обслуживания веб-страниц (явный блокирующий доступ к папке api), а другой на порту 1025 для обслуживания API с корневым каталогом документов. /var/www/api/
(оба используют одинаковые сертификаты) примерно так:
<IfModule mod_ssl.c>
<VirtualHost _default_:1025>
ServerAdmin connect@my.domain.com
ServerName https://my.domain.com
DocumentRoot /var/www/api
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/api>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_apigw.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel trace8
CustomLog ${APACHE_LOG_DIR}/access_apigw.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/my.domain.com.crt
SSLCertificateKeyFile /etc/ssl/certs/my.domain.com.key
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
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
SSLCompression off
# Add six earth month HSTS header for all users...
# Header add Strict-Transport-Security "max-age=15768000"
# If you want to protect all subdomains, use the following header
# ALL subdomains HAVE TO support HTTPS if you use this!
# Strict-Transport-Security: max-age=15768000 ; includeSubDomains
SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'
</VirtualHost>
<VirtualHost _default_:443>
ServerAdmin connect@my.domain.com
ServerName my.domain.com
DocumentRoot /var/www
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
### Block access via 443 to the API
# <Directory /var/www/api/datastreams/>
# order deny,allow
# Deny 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
SSLEngine on
SSLCertificateFile /etc/ssl/certs/my.domain.com.crt
SSLCertificateKeyFile /etc/ssl/certs/my.domain.com.key
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
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
SSLCompression off
# Add six earth month HSTS header for all users...
# Header add Strict-Transport-Security "max-age=15768000"
# If you want to protect all subdomains, use the following header
# ALL subdomains HAVE TO support HTTPS if you use this!
# Strict-Transport-Security: max-age=15768000 ; includeSubDomains
SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'
</VirtualHost>
</IfModule>
Моя проблема в том, что Apache всегда отвечает 301, когда запрос приходит через порт 1025. НО, если я отключаю SSL на порте 1025 и работаю на чистом http, все работает правильно... Я сбит с толку!
Буду очень признателен за вашу помощь!
Спасибо
1 ответ
Мой .htaccess все испортил, мне пришлось удалить
RewriteEngine On