Khi nginx được định cấu hình là proxy ngược, nó có thể viết lại tiêu đề máy chủ cho máy chủ xuôi dòng như ProxyPreservehost của Apache không?


11

Tôi dường như không thể tìm thấy tương đương với ProxyPreservehost của Apache http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost trong nginx. Điều này là cần thiết để đảo ngược proxy đến máy chủ ảo.

Những gì nó làm là thay thế tên máy chủ mà trình duyệt cung cấp bằng tên máy chủ của máy chủ xuôi dòng.

Nó tồn tại?

Câu trả lời:


11

Tôi nghĩ rằng tôi đã tìm thấy một giải pháp cho vấn đề. Gửi máy chủ của máy chủ xuôi dòng là hành vi mặc định trong nginx và tôi đã ghi đè nó bằng cách sử dụng lệnh:

proxy_set_header Host $host;

Nó sẽ gửi máy chủ theo yêu cầu của trình duyệt đến máy chủ xuôi dòng. Chính xác là trái ngược với những gì tôi muốn.

Vì vậy, trong khi nginx không có tương đương với Apache ProxyPreserveHost, thì hành vi tương tự có thể đạt được với proxy_set_headerchỉ thị và giải pháp của nginx là tổng quát hơn.


Nên proxy_set_header Host $http_host;.
Cướp

@Rob, $http_hostkhông tồn tại theo tài liệu Nginx: nginx.org/en/docs/varindex.html
Daniel Serodio

1
@DanielSerodio Trên thực tế, có, nó tồn tại, ít nhất là cho 99,99% kết nối. Xem tài liệu . Nó cũng khác nhau rất tinh tế từ $host.
Michael Hampton

@MichaelHampton Tôi đứng chính xác, cảm ơn vì liên kết
Daniel Serodio

1

Một ví dụ làm việc:

  set $s3_bucket 'SOMEBUCKET.s3.amazonaws.com';

  location / {
        send_timeout 5m;
        proxy_read_timeout 240;
        proxy_send_timeout 240;
        proxy_connect_timeout 240;
        proxy_http_version 1.1;
        proxy_set_header Host $s3_bucket;
        proxy_set_header Authorization '';
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_ignore_headers "Set-Cookie";
        proxy_buffering off;
        proxy_intercept_errors on;
        proxy_redirect off;
        resolver 8.8.8.8;
        proxy_pass http://$s3_bucket;
        }

Đây là sử dụng nginx.
cod3fr3ak
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.