How to set a Set Handler for proxy request

2019-09-03 20:59发布

问题:

So what I want is when client send request a Apache HTTP Server it should pass to back end server and then when response comes to Apache HTTP Server, it should be modified using set handler in the server and send response back to client.

  <VirtualHost *:80>

            #ServerName www.example.com
            #ProxyPreserveHost On
            ServerName localhost
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/test.com

            ProxyPass / http://0.0.0.0:8080/user/userlist
            ProxyBadHeader Ignore
            <Location / >

                    SetHandler proxyMod
                    #ProxyPassReverse http://0.0.0.0:8080/user/userlist
            </Location>

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

    </VirtualHost>

But it will not send to set handler. just pass to client what ever the back end server gives.

回答1:

You should be writing a module rather. Hope bellow documentation helps.

http://httpd.apache.org/docs/2.4/developer/modguide.html



回答2:

Yes actually what I understood was completely wrong. If you want to this king of thing you should use FastCGI or CGI (http://www.fastcgi.com/drupal/) and you can use reverse proxy to handle this. Here is the sample Apache virtual host configuration file

     <VirtualHost *:443>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName localhost
    #ProxyPreserveHost On
    ProxyRequests off
    LogLevel debug

    SSLEngine On
    SSLCertificateFile /etc/apache2/keys/ca.crt
    SSLCertificateKeyFile /etc/apache2/keys/ca.key
    SSLProxyEngine On
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/test.com

    ProxyPass /apimanager/user/signup https://localhost/api/routing_index
    ProxyPassReverse /apimanager/user/signp https://localhost/api/routing_index



    ScriptAlias /api/ /usr/local/apache2/cgi-bin/
    <Directory "/usr/local/apache2/cgi-bin/">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

  # vim: syntax=apache ts=4 sw=4 sts=4 sr noet