• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

apache2 als reverse proxy

dogas

Newbie
Hallo Guru's,

ich habe mit auf meinem SUSE Linux ES 10 den apache2 installiert und mit mod_proxy aktiviert.
Mein Ziel ist es nach außen eine Domain anzuzeigen wärend dahinder zwei Applikationen auf je einem Server werkeln. (Reverse Proxy)
Meine httpd.conf sieht folgendermaßen aus.

[...]
############################
#Reverse Proxy Konfiguration
############################
ProxyRequests Off

HostnameLookups Off
UseCanonicalName On

## Anfragen an NEP
ProxyPass /erc http://nep.domain.loc:8000/
ProxyPassReverse /erc http://nep.domain.loc:8000/

## Anfragen an EPP
ProxyPass / http://epp.domain.loc:50100/
ProxyPassReverse / http://epp.domain.loc:50100/

#ProxyHTMLEnable On
#ProxyHTMLURLMap / http://epp.domain.loc:50100/
#ProxyHTMLURLMap /erc http://nep.domain.loc:8000/

Die Proxyfunktionalität läuft. Nun müssen aber auch die HTML Links in den Seiten gefixt werden, wofür eigentlich das Modul mod_proxy_html nötig ist.
Leider bekomme ich nach einschalten der Derektive "ProxyHTMLEnable" beim starten des apache services folgenden Fehler...

"Cannot adjust apache2 server"

In der Logdatei sind keine Fehler zu finden.
Kann mir hier jemand weiterhelfen?
 

spoensche

Moderator
Teammitglied
Hast du das Modul proxy_html_module und alle weiteren Module, die für das URL Mapping benötigt werden geladen?


http://www.apachetutor.org/admin/reverseproxies
 
OP
D

dogas

Newbie
Ich denke schon, nur werden bei SUSE nicht alle angezeigt.



Das Modul mod_proxy_html habe ich manuell nachinstalliert und in die Liste eingetragen. Es steht wie man sieht aber immernoch auf unknown.
 
OP
D

dogas

Newbie
Code:
#
# /etc/apache2/httpd.conf 
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs-2.2/> for detailed information about
# the directives.

# Based upon the default apache configuration file that ships with apache,
# which is based upon the NCSA server configuration files originally by Rob
# McCool. This file was knocked together by Peter Poeml <poeml+apache@suse.de>.

# If possible, avoid changes to this file. It does mainly contain Include
# statements and global settings that can/should be overridden in the
# configuration of your virtual hosts.


# Overview of include files, chronologically:
#
# httpd.conf
#  | 
#  |-- uid.conf  . . . . . . . . . . . . . .  UserID/GroupID to run under
#  |-- server-tuning.conf  . . . . . . . . .  sizing of the server (how many processes to start, ...)
#  |-- sysconfig.d/loadmodule.conf . . . . .  [*] load these modules
#  |-- listen.conf . . . . . . . . . . . . .  IP adresses / ports to listen on
#  |-- mod_log_config.conf . . . . . . . . .  define logging formats
#  |-- sysconfig.d/global.conf . . . . . . .  [*] server-wide general settings
#  |-- mod_status.conf . . . . . . . . . . .  restrict access to mod_status (server monitoring)
#  |-- mod_info.conf . . . . . . . . . . . .  restrict access to mod_info
#  |-- mod_usertrack.conf  . . . . . . . . .  defaults for cookie-based user tracking
#  |-- mod_autoindex-defaults.conf . . . . .  defaults for displaying of server-generated directory listings
#  |-- mod_mime-defaults.conf  . . . . . . .  defaults for mod_mime configuration
#  |-- errors.conf . . . . . . . . . . . . .  customize error responses
#  |-- ssl-global.conf . . . . . . . . . . .  SSL conf that applies to default server _and all_ virtual hosts
#  |
#  |-- default-server.conf . . . . . . . . .  set up the default server that replies to non-virtual-host requests
#  |    |--mod_userdir.conf  . . . . . . . .  enable UserDir (if mod_userdir is loaded)
#  |    `--conf.d/apache2-manual?conf  . . .  add the docs ('?' = if installed)
#  |
#  |-- sysconfig.d/include.conf  . . . . . .  [*] your include files 
#  |                                             (for each file to be included here, put its name 
#  |                                              into APACHE_INCLUDE_* in /etc/sysconfig/apache2)
#  |
#  `-- vhosts.d/ . . . . . . . . . . . . . .  for each virtual host, place one file here
#       `-- *.conf . . . . . . . . . . . . .     (*.conf is automatically included)
#
#
# Files marked [*] are created from sysconfig upon server restart: instead of
# these files, you edit /etc/sysconfig/apache2



#  Filesystem layout:
#
# /etc/apache2/
#  |-- charset.conv  . . . . . . . . . . . .  for mod_auth_ldap
#  |-- conf.d/
#  |   |-- apache2-manual.conf . . . . . . .  conf that comes with apache2-doc
#  |   |-- mod_php4.conf . . . . . . . . . .  (example) conf that comes with apache2-mod_php4
#  |   `-- ... . . . . . . . . . . . . . . .  other configuration added by packages
#  |-- default-server.conf
#  |-- errors.conf
#  |-- httpd.conf  . . . . . . . . . . . . .  top level configuration file
#  |-- listen.conf
#  |-- magic
#  |-- mime.types -> ../mime.types
#  |-- mod_autoindex-defaults.conf
#  |-- mod_info.conf
#  |-- mod_log_config.conf
#  |-- mod_mime-defaults.conf
#  |-- mod_perl-startup.pl
#  |-- mod_status.conf
#  |-- mod_userdir.conf
#  |-- mod_usertrack.conf
#  |-- server-tuning.conf
#  |-- ssl-global.conf
#  |-- ssl.crl/  . . . . . . . . . . . . . .  PEM-encoded X.509 Certificate Revocation Lists (CRL)
#  |-- ssl.crt/  . . . . . . . . . . . . . .  PEM-encoded X.509 Certificates
#  |-- ssl.csr/  . . . . . . . . . . . . . .  PEM-encoded X.509 Certificate Signing Requests
#  |-- ssl.key/  . . . . . . . . . . . . . .  PEM-encoded RSA Private Keys
#  |-- ssl.prm/  . . . . . . . . . . . . . .  public DSA Parameter Files
#  |-- sysconfig.d/  . . . . . . . . . . . .  files that are created from /etc/sysconfig/apache2
#  |   |-- global.conf
#  |   |-- include.conf
#  |   `-- loadmodule.conf
#  |-- uid.conf
#  `-- vhosts.d/ . . . . . . . . . . . . . .  put your virtual host configuration (*.conf) here
#      |-- vhost-ssl.template
#      `-- vhost.template



### Global Environment ######################################################
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests.

# run under this user/group id
Include /etc/apache2/uid.conf

# - how many server processes to start (server pool regulation)
# - usage of KeepAlive
Include /etc/apache2/server-tuning.conf

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
ErrorLog /var/log/apache2/error_log

# generated from APACHE_MODULES in /etc/sysconfig/apache2
Include /etc/apache2/sysconfig.d/loadmodule.conf

# IP addresses / ports to listen on
Include /etc/apache2/listen.conf

# predefined logging formats
Include /etc/apache2/mod_log_config.conf

# generated from global settings in /etc/sysconfig/apache2
Include /etc/apache2/sysconfig.d/global.conf

# optional mod_status, mod_info
Include /etc/apache2/mod_status.conf
Include /etc/apache2/mod_info.conf

# optional cookie-based user tracking
# read the documentation before using it!!
Include /etc/apache2/mod_usertrack.conf

# configuration of server-generated directory listings
Include /etc/apache2/mod_autoindex-defaults.conf

# associate MIME types with filename extensions
TypesConfig /etc/apache2/mime.types
DefaultType text/plain
Include /etc/apache2/mod_mime-defaults.conf

# set up (customizable) error responses
Include /etc/apache2/errors.conf

# global (server-wide) SSL configuration, that is not specific to 
# any virtual host
Include /etc/apache2/ssl-global.conf

# forbid access to the entire filesystem by default
<Directory />
    Options None
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

# use .htaccess files for overriding,
AccessFileName .htaccess
# and never show them
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

# List of resources to look for when the client requests a directory
DirectoryIndex index.html index.html.var

### 'Main' server configuration #############################################
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
Include /etc/apache2/default-server.conf


# Another way to include your own files
#
# The file below is generated from /etc/sysconfig/apache2,
# include arbitrary files as named in APACHE_CONF_INCLUDE_FILES and
# APACHE_CONF_INCLUDE_DIRS
Include /etc/apache2/sysconfig.d/include.conf


### Virtual server configuration ############################################
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs-2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
Include /etc/apache2/vhosts.d/*.conf


# Note: instead of adding your own configuration here, consider 
#       adding it in your own file (/etc/apache2/httpd.conf.local)
#       putting its name into APACHE_CONF_INCLUDE_FILES in 
#       /etc/sysconfig/apache2 -- this will make system updates 
#       easier :) 

############################
#Reverse Proxy Konfiguration
############################
ProxyRequests Off

HostnameLookups Off
UseCanonicalName On
#ProxyPreserveHost On	

#Prod.config ############
#<proxy *>
# Order deny,allow
# Allow from 172.16.143.10
#</proxy>
#########################

#Testconfig ##############
<proxy *>
 Order deny,allow
 Allow from 127.0.0.1
</proxy>
#########################

## Anfragen an NEP
ProxyPass /erc http://nep.domain.loc:8000/
ProxyPassReverse /erc http://nep.domain.loc:8000/

## Anfragen an EPP
ProxyPass / http://epp.domain.loc:50100/
ProxyPassReverse / http://epp.domain.loc:50100/

ProxyHTMLEnable On
ProxyHTMLURLMap / http://epp.domain.loc:50100/
ProxyHTMLURLMap /erc http://nep.domain.loc:8000/
 

spoensche

Moderator
Teammitglied
In deiner Konfiguration sind ein paar Fehler vorhanden.

Setze "UseCanonicalName" mal auf off. Dann hast du beim URL Mapping noch ein paar Fehler.

Siehe http://www.apachetutor.org/admin/reverseproxies

PS:

Bist du dem Link nicht gefolgt, als ich ihn dir an die Hand gegeben habe? ;)
 
OP
D

dogas

Newbie
Doch ich habe meine Regeln sogar mit copy&paste von dieser Seite erstellt.
Und die funktionieren auch, bis auf ProxyHTMLEnable On

Grüße
Chris
 
OP
D

dogas

Newbie
Code:
#
# Files in this directory are created at apache start time by /usr/sbin/rcapache2 
# Do not edit them!
#

# as listed in APACHE_MODULES (/etc/sysconfig/apache2)

LoadModule authz_host_module              /usr/lib64/apache2-prefork/mod_authz_host.so
LoadModule actions_module                 /usr/lib64/apache2-prefork/mod_actions.so
LoadModule alias_module                   /usr/lib64/apache2-prefork/mod_alias.so
LoadModule auth_basic_module              /usr/lib64/apache2-prefork/mod_auth_basic.so
LoadModule authz_groupfile_module         /usr/lib64/apache2-prefork/mod_authz_groupfile.so
LoadModule authn_file_module              /usr/lib64/apache2-prefork/mod_authn_file.so
LoadModule authz_user_module              /usr/lib64/apache2-prefork/mod_authz_user.so
LoadModule autoindex_module               /usr/lib64/apache2-prefork/mod_autoindex.so
LoadModule cgi_module                     /usr/lib64/apache2-prefork/mod_cgi.so
LoadModule dir_module                     /usr/lib64/apache2-prefork/mod_dir.so
LoadModule include_module                 /usr/lib64/apache2-prefork/mod_include.so
LoadModule log_config_module              /usr/lib64/apache2-prefork/mod_log_config.so
LoadModule mime_module                    /usr/lib64/apache2-prefork/mod_mime.so
LoadModule negotiation_module             /usr/lib64/apache2-prefork/mod_negotiation.so
LoadModule setenvif_module                /usr/lib64/apache2-prefork/mod_setenvif.so
LoadModule status_module                  /usr/lib64/apache2-prefork/mod_status.so
LoadModule userdir_module                 /usr/lib64/apache2-prefork/mod_userdir.so
LoadModule asis_module                    /usr/lib64/apache2-prefork/mod_asis.so
LoadModule disk_cache_module              /usr/lib64/apache2-prefork/mod_disk_cache.so
LoadModule headers_module                 /usr/lib64/apache2-prefork/mod_headers.so
LoadModule imagemap_module                /usr/lib64/apache2-prefork/mod_imagemap.so
LoadModule mem_cache_module               /usr/lib64/apache2-prefork/mod_mem_cache.so
LoadModule proxy_module                   /usr/lib64/apache2-prefork/mod_proxy.so
LoadModule proxy_connect_module           /usr/lib64/apache2-prefork/mod_proxy_connect.so
LoadModule proxy_ftp_module               /usr/lib64/apache2-prefork/mod_proxy_ftp.so
LoadModule proxy_http_module              /usr/lib64/apache2-prefork/mod_proxy_http.so
LoadModule rewrite_module                 /usr/lib64/apache2-prefork/mod_rewrite.so
LoadModule speling_module                 /usr/lib64/apache2-prefork/mod_speling.so
LoadModule php5_module                    /usr/lib64/apache2/mod_php5.so
#

hab ich
 

spoensche

Moderator
Teammitglied
Das Proxy HTML Module wird nicht geladen. Es ist weder in der loadmodules.conf angegeben, und du lässt das Module auch nicht manuell laden. Dann kann es auch nicht funktionieren.
 
OP
D

dogas

Newbie
Und was ist das?
Code:
LoadModule proxy_http_module              /usr/lib64/apache2-prefork/mod_proxy_http.so
 

spoensche

Moderator
Teammitglied
dogas schrieb:
Und was ist das?
Code:
LoadModule proxy_http_module              /usr/lib64/apache2-prefork/mod_proxy_http.so

Das ist nicht das Modul, was du benötigst. Siehe http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

Das Modul, was du verwenden willst heisst mod_proxy_html und ist ein externes Modul und wird nicht mit dem Apache mitgeliefert.

Das Modul mod_proxy_html kannst du als rpm Paket unter http://software.opensuse.org/search downloaden und installieren. Der Suchbegriff dafür ist apache2-mod_proxy und wird dir sofort angezeigt.
 
OP
D

dogas

Newbie
Mit dem RPM Paket von SUSE download installiert.
Bekomme aber immer die Fehlermeldung

Code:
Syntax error on line 34 of /etc/apache2/httpd.conf.local:
Invalid command 'ProxyHTMLEnable', perhaps misspelled or defined by a module not included in the server configuration

Angeblich ist die Direktive ProxyHTMLEnable erst ab mod_proxy_html Version 3.1 enthalten. Kann das wer bestätigen/belegen?

Wie kann ich eigentlich aus der mod_proxy_html.c unter SUSE eine mod_proxy_html.so erstellen.
Bei Suse gibts keine höhere Version als 3.0.1-4.1, aber bei apache.webthing.com gibts eine neuere Version.
 
OP
D

dogas

Newbie
Habe bei apache.webthing.com den mod_proxy_html in der aktuellen version gezogen und mit apsx2 für apache2 den mod_proxy_html.c & xml2enc_module.c neu compiled. :D
Jetzt kommt er auch mit der Direktive klar. :p

Danke.
 
OP
D

dogas

Newbie
Jetzt muss nur noch die blöde Reverse-Proxy Konfiguration mal funktionieren.
Hat jemand mal ne schöne Beispielkonfiguration für mich.
Meine will irgendwie nicht. :(
 
Oben