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

RewriteCond% {SERVER_PORT} 80

RewriteRule ^ (. *) $ https://my.domain.com/$ 1 [R = 301, L]

Другие вопросы по тегам