使用 apache mod_proxy 配置多站点

使用 apache mod_proxy 配置多站点

我有一台大服务器(临时的,一些网站会在某个时候移动到其他几个服务器),其中我安装了我项目所需的所有工具(Jira、Bamboo 等),现在我需要添加一个“常规”网站到其中,而不是所有其他已经配置的网站,这些网站实际上不需要通过 apache 代理,可以直接提供服务。

为了更清楚地说明,我在其独立 Tomcat 上运行了 Jira、bamboo 和一些其他应用程序,apache 正在代理请求,我想在此配置中添加一个常规网站,但是当我添加 vhost 配置时,所有网站都会关闭。

这是我的配置文件:

Apache2.conf:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf

tomcat 独立版后面应用程序的示例配置文件(共有 4 个这样的文件):

<VirtualHost *>
    ServerName jira.example.com

    # Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts)
    ProxyRequests Off
    ProxyPreserveHost On

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

    ProxyPass / http://example.com:8080/
    ProxyPassReverse / http://example.com:8080/

    <Location />
        Order allow,deny
        Allow from all
    </Location>

    LogLevel info

    ErrorLog ${APACHE_LOG_DIR}/jira_error.log
    CustomLog ${APACHE_LOG_DIR}/jira_access.log combined

</VirtualHost>

新 vHost 的配置文件(正在进行中):

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName testing.example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log

    ProxyRequests Off
    ProxyPreserveHost On

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

    ProxyPass / http://testing.exemple.com/
    ProxyPassReverse / http://testing.exemple.com/

    <Location />
        Order allow,deny
        Allow from all
        require all granted
    </Location>
</VirtualHost>

我还有一个 phpmyadmin 的配置文件,但我认为它不是解决我们这里的问题所必需的。

我多次更改了新的 vhost 文件,导致了不同的行为:

我从一个很小的配置文件开始,里面没有太多内容(serveradmin、servername、documentroot 和日志配置),但当我添加文件时,没有任何网站可用,出现 403 Forbidden 错误,error.log 或 access.log 中也没有任何内容

我尝试添加如下目录指令:

<Directory "/var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV">
    Options FollowSymLinks
    Require all granted
</Directory>

这样,新站点即可访问,但其他站点全部重定向到新站点。

然后我尝试了上面发布的文件,当我尝试访问不同的网站时,请求会过时,并且在某些时候,它们会因为无效响应(从远程服务器读取错误)而返回代理错误。我的 error.log 中有以下内容:

[mpm_prefork:error] [pid 20284] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

但是改变 mpm_prefork 的配置并没有多大作用。

我不知道下一步该做什么。有什么建议吗?

答案1

<VirtualHost *>感觉不对,是打字错误吗?也许<VirtualHost *:80>会更好?

在标准 vhost 定义中这看起来很奇怪

ProxyRequests Off
ProxyPreserveHost On

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

ProxyPass / http://testing.exemple.com/
ProxyPassReverse / http://testing.exemple.com/

并且几乎肯定会导致您耗尽请求工作者,因为您创建了一个循环,testing.example.com 反向代理到 tesing.example.com 反向...

从简单的事情开始,然后逐步拓展。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName testing.example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log
</VirtualHost>

答案2

我在这里回答是为了发布现在正在运行的配置。

我要做的是在代理网站上添加端口

<VirtualHost *:80>

并添加目录语句以允许访问 / :

<Directory />
    require all granted
</Directory>

vhost 配置文件:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    <Directory />
        require all granted
    </Directory>

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log
</VirtualHost>

再次感谢@lain 的帮助。

相关内容