LINUX.ORG.RU
ФорумAdmin

apache2 proxy recursion

 ,


0

1

После установки веб-приложение создало конфиг apache и стало доступно по http://0.0.0.0/egroupware

# cat /etc/apache2/sites-enabled/egroupware.conf
# Apache and PHP configuration for EGroupware
#
# Many settings are required to have a # certain value for eGroupWare
# to function reasonably, so only change something if you are sure.

# this makes EGroupware available for all vhosts
Alias /egroupware /usr/share/egroupware

# Enable ActiveSync protocol support via eSync app
Alias /Microsoft-Server-ActiveSync /usr/share/egroupware/activesync/index.php

RedirectMatch ^/.well-known/(caldav|carddav)$ /egroupware/groupdav.php/
# iOS 4.3+ calendar requires that to autodetect accounts
RedirectMatch ^(/principals/users/.*)$ /egroupware/groupdav.php$1

<Directory /usr/share/egroupware/>
  Options FollowSymLinks ExecCGI
  AllowOverride None
  <IfModule !mod_authz_core.c>
    # Apache 2.4
    Order allow,deny
    Allow from all
  </IfModule>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require all granted
  </IfModule>
  DirectoryIndex index.html index.php
  AddHandler cgi-script .cgi
  AddDefaultCharset Off
  php_flag file_uploads on
  php_flag log_errors on
  php_flag magic_quotes_gpc off
  php_flag magic_quotes_runtime off
  php_flag register_globals off
  php_flag short_open_tag on
  php_flag track_vars on
  php_flag display_errors off
  # E_ALL & ~E_NOTICE & ~E_STRICT = 8191 - 8 - 2048 = 6135
  php_value error_reporting 6135
  php_value max_execution_time 90
  php_admin_value mbstring.func_overload 0
  php_value memory_limit 128M
  php_value include_path .
  php_admin_value open_basedir /usr/share/egroupware:/var/lib/egroupware:/tmp:/usr/bin
  php_value upload_max_filesize 64M
  php_admin_value upload_tmp_dir /tmp
  php_value post_max_size 65M
  php_value max_input_vars 3000
  php_admin_value session.gc_maxlifetime 14400
  <Files ~ "\.inc\.php$">
    <IfModule !mod_authz_core.c>
      # Apache 2.4
      Order allow,deny
      Deny from all
    </IfModule>
    <IfModule mod_authz_core.c>
     # Apache 2.4
     Require all denied
    </IfModule>
  </Files>
  # Enable the following block in order to redirect logins to HTTPS:
  #RewriteEngine On
  #RewriteCond %{HTTPS} !^on$
  #RewriteCond %{SCRIPT_FILENAME} login\.php [OR]
  #RewriteCond %{AUTH_TYPE} Basic [NC]
  #RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [L,R]
</Directory>

# Enable the following block in order to redirect setup activities to HTTPS:
#<Directory /usr/share/egroupware/setup/>
#  RewriteEngine On
#  RewriteCond %{HTTPS} !^on$
#  RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [L,R]
#</Directory>

Требуется сделать приложение доступным по DNS, причем приведенный конфиг нельзя править.

Создал VirtualHost

<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName egw.example.local
        ServerAlias egw.example.com

        ProxyRequests Off
        ProxyPreserveHost On
        ProxyVia full

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

        ProxyPass / http://localhost:80/egroupware/
        ProxyPassReverse / http://localhost:80/egroupware/

</VirtualHost>

На такое в логеapache2/errror.log возмущение:

Sat Sep 30 23:44:55.597849 2017] [proxy_http:error] [pid 21618] (20014)Internal error (specific information not available): [client ::1:53400] AH01102: error reading status line from remote server localhost:80
[Sat Sep 30 23:44:55.597922 2017] [proxy:error] [pid 21618] [client ::1:53400] AH00898: Error reading from remote server returned by /egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/egroupware/
★★★★★

Погоди. Твой nginx слушает *:80 и выполняет проксирование на localhost:80 ? Ничего не смущает?

Где-то здесь и появился адский редирект. Возможно из-за того, что proxy_pass прямо в server, без location

И в логе apache какой-то прокси упомянут, хотя в конфиге его не вижу

Разнеси nginx и apache по разным портам, будет гораздо легче

Если это невозможно - по разным хостам

Ну в крайнем случае nginx на нестандартный порт и через iptables - редирект _внешних_ обращений на nginx

Потом уже можно будет смотреть в дампе, кто именно возвращает редиректы и дебажить

router ★★★★★
()
Ответ на: комментарий от router

Где-то здесь и появился адский редирект. Возможно из-за того, что proxy_pass прямо в server, без location

Смотри:

приходит на nginx запрос

http://egw.example.com

Он его проксирует на

http://localhost/egroupware/

, попадает на тот же самый nginx на _дефолтный_ сайт, и снова проксирует на

http://localhost/egroupware/egroupware/

и так далее

Где тут вклинился апач я не вижу, но редирект именно из-за того, что на nginx редирект на тот же самый nginx

router ★★★★★
()
Ответ на: комментарий от router

попадает на тот же самый nginx на _дефолтный_ сайт, и снова проксирует на

Да

Ну в крайнем случае nginx на нестандартный порт и через iptables - редирект _внешних_ обращений на nginx

Воот, это должно сработать.

petav ★★★★★
() автор топика
Ответ на: комментарий от router
  • Виртуальный хост egw.example.com повесить на localhost:443 (сертификат выписать).
  • На хосте localhost:443 прокси на localhost:80.
  • В iptables все запросы на 80 порт перекидывать на 443
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 443

)))

petav ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.