如何使用Apache为Drupal 8配置一个容器,使其在另一个容器Nginx之后用作反向代理

时间:2018-07-12 12:40:59

标签: docker drupal-8 apache2.4 nginx-reverse-proxy

我们已经建立了一个反向代理Nginx,以将请求重定向到正确的Web服务容器。

配置Nginx反向代理:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name weblab.mhf.mhc;
    client_max_body_size 200M;

    location /client_portal/ {
        resolver 127.0.0.11 ipv6=off;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://client_portal;
        access_log /var/log/nginx/client_portal.access.log;
        error_log /var/log/nginx/client_portal.error.log;
    }
}

client_portal网站由另一个使用Apache作为Web服务器的容器托管。

配置Apache client_portal:

<VirtualHost *:80>
    ServerAdmin toto@toto.com
    ServerName weblab.mhf.mhc
    DocumentRoot /srv/www/
    ErrorLog ${APACHE_LOG_DIR}/client_portal.error.log
    CustomLog ${APACHE_LOG_DIR}/client_portal.access.log combined
    <Location "/client_portal">
        AllowOverride All
        Require all granted
    </Location>
</VirtualHost>

当我导航到https://weblab.mhf.mhc/client_portal时,使用此配置可​​以正确加载首页,但重定向已中断。如果我转到https://weblab.mhf.mhc/client_portal/user/login,则会收到404错误。 我也尝试了这种配置(用于生产环境),但是首页加载不正确(所有css / js文件都损坏了):

<VirtualHost *:80>
    ServerAdmin toto@toto.com
    ServerName weblab.mhf.mhc
    DocumentRoot /srv/www/
    ErrorLog ${APACHE_LOG_DIR}/client_portal.error.log
    CustomLog ${APACHE_LOG_DIR}/client_portal.access.log combined

    <Directory  /srv/www/client_portal>
        Options -Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

我试图将apache切换到nginx,并为nginx(https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/)使用了官方的drupal 8配置,但是我遇到了同样的问题。请问配置有什么问题?

1 个答案:

答案 0 :(得分:1)

最后,我发现了错误。

我必须使用此配置:

<VirtualHost *:80>
    ServerAdmin toto@toto.com
    ServerName weblab.mhf.mhc
    DocumentRoot /srv/www/
    ErrorLog ${APACHE_LOG_DIR}/client_portal.error.log
    CustomLog ${APACHE_LOG_DIR}/client_portal.access.log combined

    <Directory  /srv/www/client_portal>
        Options -Indexes +Includes +FollowSymLinks -MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

对于Drupal,必须禁用MultiViews选项:

  

如果默认情况下Apache服务器启用了Options + MultiViews,则Apache> Virtualhost配置还应包含Options -MultiViews(或将-MultiViews添加到现有的Options指令中)。

源:https://www.drupal.org/docs/8/system-requirements/web-server