Cần trợ giúp với một số cài đặt nén web.config IIS7


9

Tôi đang cố gắng định cấu hình cài đặt nén IIS7 trong tệp web.config. Tôi đang cố gắng kích hoạt các yêu cầu HTTP 1.0 thành gzip.

MSDN có tất cả các thông tin về nó ở đây .

Có thể có thông tin cấu hình này trong tệp web.config của trang web của riêng tôi không? Hay tôi cần phải đặt nó ở cấp độ ứng dụng? Hiện tại, tôi có mã đó trong web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Nó không hoạt động :( Yêu cầu HTTP 1.1 đang được nén, không phải là 1.0.

Trang MSDN ở trên nói rằng nó có thể được sử dụng trong: -

  • Máy.config
  • Apphost.config
  • Ứng dụng root Web.config
  • Ứng dụng Web.config
  • Thư mục Web.config

Vì vậy, chúng tôi có thể đặt các cài đặt này trên cơ sở cho mỗi trang web, theo chương trình trong tệp web.config không? (đây là tệp Ứng dụng Web.config ...) Tôi đã làm gì sai?

chúc mừng :)

EDIT: Tôi đã được hỏi làm thế nào tôi biết HTTP1.0 không bị nén. Tôi đang sử dụng Quy tắc theo dõi yêu cầu thất bại, báo cáo lại: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Câu trả lời:


3

Hãy chú ý đến thực tế là cài đặt IIS.x web.config của

noCompressionForProxies="false"

Không được vinh danh ở cấp web.config. Nó phải được đặt trong C: \ Windows \ System32 \ inetsrv \ config \ Applicationhost.config như vậy:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Hãy chắc chắn và thực hiện thiết lập lại IIS sau khi thay đổi cài đặt.

Một yêu cầu được xác định là từ proxy bởi IIS nếu yêu cầu web của máy khách có tiêu đề "Via" HTTP như vậy:

Via: 1.1 foo

Bạn cũng có thể sử dụng appcmdđể đặt cài đặt cấp độ ứng dụng (có thể dễ dàng hơn nhiều).
Pure.Krom

2

Sau một chút nghiên cứu, nó được 'khóa' theo mặc định ở cấp ứng dụng. Như vậy, nó cần phải được 'mở khóa'. điều này có thể đạt được thông qua dòng lệnh hoặc thông qua các công cụ quản trị iis7 (tải thêm).

ví dụ. appcmd set config -section:urlCompression /doDynamicCompression:true

Chuyển hướng:


1

Làm thế nào bạn kiểm tra các yêu cầu HTTP1.0 không được nén? Có thể là máy khách mà bạn đang sử dụng không nói với máy chủ rằng nó có thể chấp nhận phản hồi nén không?

Nếu bạn có thể thấy các tiêu đề được gửi bởi máy khách (được trình bày bởi chính máy khách thử nghiệm, sử dụng Fireorms hoặc tương tự nếu bạn đang kiểm tra trong Firefox hoặc IEHTTPHeaders nếu bạn đang kiểm tra trong IE hoặc bằng cách đánh hơi lưu lượng truy cập bằng công cụ bên ngoài), bạn nên thấy một cái gì đó như

Accept-Encoding: compress, gzip, deflate

trong đó ở đâu đó Nếu máy khách không thông báo cho máy chủ rằng nó có thể chấp nhận phản hồi nén thì máy chủ sẽ không gửi cho dù bạn có cài đặt nào khác phía máy chủ.

Một vấn đề khác có thể là nếu bạn đang kiểm tra thông qua một máy chủ proxy tự xác định như vậy. Trong trường hợp này, cài đặt noCompressionForProxies có thể được ưu tiên và chặn khả năng phản hồi nén.

Một điều cần lưu ý là một số máy khách và proxy gửi các yêu cầu HTTP1.0 (thường là phần mềm cũ hơn) sẽ không xử lý chính xác phản hồi được nén nếu chúng nhận được, vì vậy nếu bạn bật tính năng nén để trả lời các yêu cầu HTTP1.0, hãy đảm bảo rằng bạn kiểm tra trang web / ứng dụng của bạn trong tất cả các phần mềm máy khách / proxy mà bạn mong đợi khách truy cập / người dùng sẽ sử dụng. Đây không phải là vấn đề nếu bạn có thể đảm bảo đối tượng mục tiêu của mình sẽ sử dụng một số phần mềm nhất định (ví dụ: ứng dụng chỉ dành cho mạng công ty nội bộ) nhưng nếu không thì có rất nhiều kết hợp để kiểm tra, đó là lý do tại sao hầu hết các máy chủ đều vô hiệu hóa nén 1.0 yêu cầu hoàn toàn.


Tôi đang thử nghiệm mà HTTP1.0 yêu cầu không nhận được nén bằng cách sử dụng các yêu cầu không thành Tracing Quy tắc, mà báo cáo lại: - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS Lý do: 3 lý do: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome
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.