Điểm:2

Cách xử lý cuộc gọi proxy trong apache

lá cờ cn

Tôi có một thiết lập proxy ngược như sau trong Apache:

Máy chủ A có địa chỉ www.proxyserver.com/graphql là máy chủ proxy ngược.

Nó ánh xạ tới: Máy chủ B với địa chỉ example.com

Loại này hoạt động đúng trong môi trường phát triển.

Ví dụ: khi máy chủ gọi một yêu cầu /graphql?query1=query1&query2=query2 sau đó nó chuyển hướng đến https://proxyserver.com/graphql?query1=query1&query2=query2

Nhưng trong apache, nó không hoạt động. Nó gọi http://example.com/graphql?query1=query1&query2=query2

Làm thế nào để tôi khắc phục điều này?

Proxy đảo ngược của tôi được định cấu hình như sau trên Máy chủ 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>

và đây là cấu hình máy chủ 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>
lá cờ cn
Tôi nghĩ các lệnh `Proxy...` dành cho máy chủ proxy (Máy chủ A). Máy chủ B thậm chí không nên biết nó đứng sau một proxy. Điều đó đang được nói, có thể cần _nhớ_ một số tên máy chủ lưu trữ để mọi thứ hoạt động như mong đợi. Bạn cũng nên cho chúng tôi xem cài đặt của Máy chủ A.
Ming Hieu avatar
lá cờ cn
@AlexisWilke Tôi vừa chỉnh sửa bài đăng của mình. vui lòng kiểm tra ở trên
lá cờ cn
Hmmm... máy khách kết nối với máy chủ A hay máy chủ B?
Ming Hieu avatar
lá cờ cn
máy chủ B là máy khách (Reacjs) và máy chủ A là phụ trợ (php). để máy khách kết nối với máy chủ A
lá cờ cn
À, tôi thấy rằng bạn đang sử dụng ổ cắm Unix (`unix:/var/opt/remi/php73/run/php-fpm/php73-fpm.sock`). Trong quá trình phát triển của bạn, bạn có đang chạy máy chủ A & B trên cùng một máy tính và ở chế độ trực tiếp, chúng là các máy tính riêng biệt không? Đó có thể là vấn đề. Tôi thực sự chưa bao giờ sử dụng ổ cắm Unix cho các dịch vụ proxy.
Ming Hieu avatar
lá cờ cn
không, chúng ở trên cùng một máy tính. phần cấu hình cho unix socket thừa mình quên gỡ

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.