2

I have a reverse proxy setup as follows in Apache:

Server A with address www.proxyserver.com/graphql is the reverse proxy server.

It maps to: Server B with address example.com

This kind works properly in develop environment.

For e.g: when server call a request /graphql?query1=query1&query2=query2 then it redirects to https://proxyserver.com/graphql?query1=query1&query2=query2

But in apache, it doesn't work. It calls http://example.com/graphql?query1=query1&query2=query2

How do I fix this?

My reverse proxy is configured as follow on Server B (www.example.com):

<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot /var/www/example.com/build
    ServerName example.com
    ServerAlias www.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ProxyPreserveHost On
    ProxyPass "/graphql" "https://proxyserver.com/graphql"
    ProxyPassReverse "/graphql" "https://proxyserver.com/graphql"
</VirtualHost>

and this is server A configuration

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin admin@arrowhitech.com
        DocumentRoot /etc/pub
        ServerName proxyserver.com
        ErrorLog logs/cezanno-error_log
        LimitRequestBody 104857600
        <Proxy "unix:/var/opt/remi/php73/run/php-fpm/php73-fpm.sock|fcgi://proxyserver.com">
            ProxySet timeout=100
        </Proxy>
        <FilesMatch \.(php|phar)$>
            SetHandler "proxy:fcgi://proxyserver.com"
        </FilesMatch>

        SSLCertificateFile /path/to/cert/directory/cert.pem
        SSLCertificateKeyFile /path/to/cert/directory/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /path/to/cert/directory/chain.pem
    </VirtualHost>
</IfModule>
Ming Hieu
  • 21
  • 2
  • I thought the `Proxy...` commands were for the proxy server (Server A). Server B should not even know it's behind a proxy. That being said, there may be a need to _remember_ some host names for things to work as expected. You should also show us the settings of Server A. – Alexis Wilke Jul 21 '21 at 03:47
  • @AlexisWilke I've just edited my post. please check above – Ming Hieu Jul 21 '21 at 04:14
  • Hmmm... does the client connect to server A or server B? – Alexis Wilke Jul 21 '21 at 05:02
  • server B is client (reactjs) and server A is backend (php). so the client connect to server A – Ming Hieu Jul 21 '21 at 06:11
  • 1
    Ah, I see that you are using a Unix socket (`unix:/var/opt/remi/php73/run/php-fpm/php73-fpm.sock`). In your development, are you running server A & B on the same computer and in live mode they are separate computers? That could be the issue. I've actually never used a Unix socket for proxy-ing services. – Alexis Wilke Jul 21 '21 at 16:47
  • no, they are on same computer. the configuration part for unix socket is superfluous, I forgot to remove it – Ming Hieu Jul 22 '21 at 01:59

0 Answers0