2013-02-12 34 views
21

Cố gắng sử dụng AAR làm proxy ngược trước một vài máy chủ IIS ở phía sau.IIS AAR - URL Viết lại cho proxy ngược - cách gửi HTTP_HOST

  • Một địa chỉ IP công cộng được gán cho máy chủ chạy IIS/AAR

  • Sau đó, ngoài quy tắc ghi đè URL được thiết lập để chuyển hướng đến một trong một số máy chủ back-end tùy thuộc vào hostname.

trình phần nào, nhưng luôn luôn trả về máy chủ cuối trang web mặc định trở lại (không phải là một ánh xạ tới một hostname) để nó trông giống như tên máy chủ (HTTP_HOST) là không nhận được truyền từ máy chủ proxy để back-end máy chủ.

(tôi đã xác minh bỏ qua proxy ngược bằng cách chỉnh sửa các máy chủ và máy chủ back-end trả về trang web chính xác ràng buộc với tiêu đề host)

Đây là một ví dụ về sự cai trị (192.168.0.99 là máy chủ nội bộ, site.myco.com là hostname)

<rewrite> 
     <rules> 
      <rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
       <match url="(.*)" /> 
       <action type="Rewrite" url="http://192.168.1.99/{R:1}" />     
      </rule> 
     </rules> 
    </rewrite> 

đã thử đặt sever biến để

<!-- Guessing server.myco.com is hard coded --> 
    <serverVariables> 
     <set name="HTTP_HOST" value="server.myco.com" /> 
    </serverVariables> 

    <!-- Guessing picked up dynamically from incoming request host header --> 
    <serverVariables> 
     <set name="HTTP_HOST" value="{HTTP_HOST}" /> 
    </serverVariables> 

Bu t luôn luôn trả về ràng buộc mặc định - bất kỳ ý tưởng nào?

Trả lời

27

Bài đăng này có câu trả lời - Modifying headers with IIS7 Application Request Routing

Cần để cho phép preserveHostHeader - không thể xem cách bạn làm điều đó trong giao diện người dùng nhưng công trình này

Run này từ dòng lệnh để cập nhật máy/webroot/apphost cấu hình

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost 
+0

Chắc chắn không biết về điều này trước đây! – cheesemacfly

+0

Tôi tìm thấy điều này trong giao diện người dùng cho IIS 8.5: Máy chủ (hoặc trang web)> Trình chỉnh sửa cấu hình> system.webServer> Proxy. Tuy nhiên, việc sao chép ở trên vào một lệnh chạy hoặc cửa sổ dòng lệnh sẽ dễ dàng hơn/nhanh hơn. – ahwm

2

Tôi đoán rằng máy chủ của bạn không cho phép bạn thay đổi biến máy chủ HTTP_HOST khi bạn viết lại URL.

Ở cấp độ của trang web nơi URL viết lại được áp dụng:

inetmgr

Sau đó, nhấp vào liên kết Add... trên tab phải và thêm HTTP_HOST biến của bạn:

add HTTP_POST

+1

Không đoán xấu nhưng thats đã thực hiện - bạn nhận được một lỗi 500.500 nếu nó không có tại chỗ nói với bạn. – Ryan

Các vấn đề liên quan