Puncte:2

Cum să gestionați apelul proxy în apache

drapel cn

Am o configurare proxy inversă după cum urmează în Apache:

Server A cu adresa www.proxyserver.com/graphql este serverul proxy invers.

Se mapează la: Server B cu adresa example.com

Acest tip funcționează corect în mediul de dezvoltare.

De exemplu: atunci când serverul apelează o solicitare /graphql?query1=query1&query2=query2 apoi redirecționează către https://proxyserver.com/graphql?query1=query1&query2=query2

Dar în apache, nu funcționează. Sună http://example.com/graphql?query1=query1&query2=query2

Cum repar asta?

Proxy-ul meu invers este configurat după cum urmează pe Server B (www.example.com):

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

și aceasta este configurația serverului A

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin [email protected]
        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>
drapel cn
Am crezut că comenzile `Proxy...` sunt pentru serverul proxy (Server A). Serverul B nici nu ar trebui să știe că se află în spatele unui proxy. Acestea fiind spuse, poate fi nevoie să _reținem_ unele nume de gazdă pentru ca lucrurile să funcționeze conform așteptărilor. Ar trebui să ne arătați și setările serverului A.
Ming Hieu avatar
drapel cn
@AlexisWilke Tocmai mi-am editat postarea. te rog verifica mai sus
drapel cn
Hmmm... clientul se conectează la serverul A sau serverul B?
Ming Hieu avatar
drapel cn
serverul B este client (reactjs) și serverul A este backend (php). astfel încât clientul se conectează la serverul A
drapel cn
Ah, văd că utilizați un socket Unix (`unix:/var/opt/remi/php73/run/php-fpm/php73-fpm.sock`). În dezvoltarea dvs., rulați serverul A și B pe același computer și în modul live sunt computere separate? Asta ar putea fi problema. De fapt, nu am folosit niciodată un socket Unix pentru servicii de proxy.
Ming Hieu avatar
drapel cn
nu, sunt pe același computer. partea de configurare pentru socket Unix este de prisos, am uitat să o scot

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.