Thêm một tiêu đề tùy chỉnh cho các yêu cầu ProxyPass


9

Tôi có một vhost apache đơn giản:

<VirtualHost *:80>
  ServerName hello.local

  ProxyPass / http://localhost:8810/
  ProxyPassReverse / http://localhost:8810/
</VirtualHost>

Tất cả các yêu cầu để hello.local được ủy quyền http://localhost:8810/. Những gì tôi muốn làm là thêm một tiêu đề vào yêu cầu http sẽ đến http://localhost:8810/với một giá trị được trả về bởi một lệnh bên ngoài. Cái gì đó như

Header set MyHeader ${/usr/bin/an_external_program}

Bất kỳ cách nào để thực hiện điều này?


Bạn muốn thực hiện chương trình bên ngoài này trong mỗi yêu cầu?
tọa

Đúng. Hoặc nó cũng có thể là một "subrequest": một giá trị được trả về bởi một tập lệnh cgi hoặc một cái gì đó tương tự. Tôi nhận thức được ý nghĩa hiệu suất.
Simon

Câu trả lời:


9

Ok tôi hiểu rồi

Trước hết, tập lệnh được thực thi và được sử dụng để lấy giá trị để chèn vào tiêu đề. Tôi đã tạo cái này như /opt/apache/debug.sh:

#!/bin/bash

#this script just loops forever and outputs a random string
#every time it receives something on stdin

while read
do
        cat /dev/urandom|head -c12|base64
done

Cấu hình Apache:

<VirtualHost *:80>
        ServerName light.nik

        RewriteEngine On

        RewriteMap doheader prg:/opt/apache/debug.sh
        RewriteRule (.*) - [E=customheader:${doheader:},P]

        RequestHeader set customheader %{customheader}e

        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Dịch vụ phụ trợ chạy trên http://localhost:8080/nhận được customheadervới giá trị từ tập lệnh.

Tài liệu Apache về việc sử dụng chương trình bên ngoài có ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.