Apache2 子域名 www https proxypass

Apache2 子域名 www https proxypass

我的设置相当复杂。至少对我来说,因为我对 apache、mod_rewrite 和所有这些东西都不熟悉。

我想要的是这个:

  • 删除所有 www 前缀
  • 将所有子域名重定向到 https,因此,排除域名本身(foo.bar.com,但不包括 bar.com)
  • 将所有对子域的请求代理到域的 8089 端口

因此,我编写了一个代码,除了 www.foo.bar.com 之外,该代码基本可以正常工作。我现在正在编写一个新的代码。

问题是,我不知道按照什么顺序才能正常工作。我应该先删除 www 吗?还是应该在顶部设置代理?

这是我目前的新文件。

我希望有人能帮助我把东西清理干净。

# welcome page
<VirtualHost *:80>
    ServerName bar.com
    DocumentRoot /var/www/bar
</VirtualHost>

# ssl and proxy for subdomains
<VirtualHost *:443>
    ServerName foo.bar.com
    ServerAlias *.bar.com

    SSLEngine On
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

    ProxyRequests Off
    ProxyPass / http://bar.com:8089/
    ProxyPassReverse / http://bar.com:8089/

    ProxyVia On
</VirtualHost>

<VirtualHost *:80 *:443>
    ServerName bar.com
    ServerAlias *.bar.com

    # remove www
    RewriteEngine On
    RewriteCond %{HTTP_HOST}    ^www\.(.+)              [NC]
    RewriteRule ^               http://%1%{REQUEST_URI} [R=301]

    # redirect https://bar.com -> http://bar.com
    RewriteCond %{HTTPS}        on
    RewriteCond %{HTTP_HOST}    ^bar.com$                    [NC]
    RewriteRule ^               http://bar.com%{REQUEST_URI} [L,R=301]

    # redirect http -> https
    RewriteCond %{HTTPS}        off
    RewriteRule (.*)            https://%{HTTP_HOST}%{REQUEST_URI}  [R=301]

    ErrorLog /var/log/foo/foo-error.log
    CustomLog /var/log/foo/foo-access.log combined
    LogLevel warn

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>


################
# restrictions #
################

<Location /web/database>
    Order deny,allow
    Deny from all
    Allow from 1.2.3.4
</Location>

相关内容