Score:2

วิธีจัดการการโทรพร็อกซีใน apache

ธง cn

ฉันมีการตั้งค่าพร็อกซีย้อนกลับดังนี้ใน Apache:

เซิร์ฟเวอร์ A พร้อมที่อยู่ www.proxyserver.com/graphql เป็นพร็อกซีเซิร์ฟเวอร์ย้อนกลับ

โดยจะจับคู่กับ: เซิร์ฟเวอร์ B ที่มีที่อยู่ example.com

ชนิดนี้ทำงานได้อย่างถูกต้องในการพัฒนาสภาพแวดล้อม

เช่น เมื่อเซิร์ฟเวอร์เรียกคำขอ /graphql?query1=query1&query2=query2 จากนั้นจะเปลี่ยนเส้นทางไปที่ https://proxyserver.com/graphql?query1=query1&query2=query2

แต่ใน apache มันใช้งานไม่ได้. มันโทร http://example.com/graphql?query1=query1&query2=query2

ฉันจะแก้ไขปัญหานี้ได้อย่างไร

พร็อกซีย้อนกลับของฉันได้รับการกำหนดค่าดังต่อไปนี้บนเซิร์ฟเวอร์ 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>

และนี่คือการกำหนดค่าเซิร์ฟเวอร์ 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>
cn flag
ฉันคิดว่าคำสั่ง `Proxy...` มีไว้สำหรับพร็อกซีเซิร์ฟเวอร์ (เซิร์ฟเวอร์ A) เซิร์ฟเวอร์ B ไม่ควรรู้ด้วยซ้ำว่าอยู่เบื้องหลังพร็อกซี ดังที่กล่าวไว้ อาจจำเป็นต้อง _remember_ ชื่อโฮสต์บางชื่อเพื่อให้ทำงานได้ตามที่คาดไว้ คุณควรแสดงการตั้งค่าของเซิร์ฟเวอร์ A ให้เราเห็นด้วย
Ming Hieu avatar
cn flag
@AlexisWilke ฉันเพิ่งแก้ไขโพสต์ของฉัน โปรดตรวจสอบด้านบน
cn flag
อืมม... ลูกค้าเชื่อมต่อกับเซิร์ฟเวอร์ A หรือเซิร์ฟเวอร์ B หรือไม่
Ming Hieu avatar
cn flag
เซิร์ฟเวอร์ B เป็นไคลเอนต์ (reactjs) และเซิร์ฟเวอร์ A เป็นแบ็กเอนด์ (php) ดังนั้นไคลเอนต์จึงเชื่อมต่อกับเซิร์ฟเวอร์ A
cn flag
อา ฉันเห็นว่าคุณกำลังใช้ซ็อกเก็ต Unix (`unix:/var/opt/remi/php73/run/php-fpm/php73-fpm.sock`) ในการพัฒนาของคุณ คุณกำลังเรียกใช้เซิร์ฟเวอร์ A & B บนคอมพิวเตอร์เครื่องเดียวกัน และในโหมดใช้งานจริง เซิร์ฟเวอร์ทั้งสองเป็นคอมพิวเตอร์แยกกันหรือไม่ นั่นอาจเป็นปัญหา ฉันไม่เคยใช้ซ็อกเก็ต Unix สำหรับบริการพร็อกซี
Ming Hieu avatar
cn flag
ไม่ พวกเขาอยู่ในคอมพิวเตอร์เครื่องเดียวกัน ส่วนการกำหนดค่าสำหรับซ็อกเก็ตยูนิกซ์นั้นไม่จำเป็น ฉันลืมเอาออก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา