Điểm:1

NGNIX thực thi HTTPS

lá cờ ph

đối với Ứng dụng web của tôi (Ứng dụng góc), chúng tôi đang sử dụng NGNIX làm máy chủ web. Tôi có một nhiệm vụ cần đảm bảo tất cả nội dung/hình ảnh được tải qua HTTPS.

Trong các công cụ dành cho nhà phát triển trình duyệt, tôi thấy yêu cầu được gửi qua HTTPS. Tuy nhiên, tiêu đề vị trí phản hồi sẽ trở lại dưới dạng URL HTTP (xem ảnh chụp màn hình bên dưới).

ảnh chụp màn hình từ các công cụ phát triển trình duyệt

Dưới đây là Cấu hình NGNIX hiện tại:

người phục vụ {
    nghe 80;
    máy chủ_tên máy chủ cục bộ;
    gốc /usr/share/nginx/html;

    # xóa bộ đệm
    add_header Sửa đổi lần cuối $date_gmt;
    add_header Cache-Control 'no-store, no-cache';
    if_modified_kể từ khi tắt;
    hết hạn;
    tắt thẻ;

    # Thi hành HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" luôn luôn;

    # Vô hiệu hóa iFrames
    add_header x-frame-options "SAMEORIGIN" luôn luôn;

    # phát hiện và từ chối CRLF
    nếu ($request_uri ~* "%0A|%0D" ) {
      trả lại 400;
    }

    # Dự phòng về ngôn ngữ mặc định nếu không có tùy chọn nào được xác định bởi trình duyệt
    nếu ($accept_language ~ "^$") {
      đặt $accept_language "de";
    }

    # Chuyển hướng "/" sang ứng dụng Angular bằng ngôn ngữ ưa thích của trình duyệt
    viết lại ^/$ /$accept_language vĩnh viễn;

    if ($uri !~ ^/(en-US|de)) {
      trả về 301 /$accept_language$uri$args;
    }

    # Mọi thứ trong ứng dụng Angular luôn được chuyển hướng đến Angular bằng ngôn ngữ chính xác
    vị trí ~ ^/(en-US|de) {
        try_files $uri$args $uri$args/ /$1/index.html;

      # Thêm tiêu đề bảo mật từ tệp riêng biệt
      # bao gồm /etc/nginx/security-headers.conf;
    }

    địa điểm/sức khỏe {
      truy cập_đăng xuất;
      trả lại 200;
      add_header Văn bản kiểu nội dung/đơn giản;
      # Thi hành HSTS
      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" luôn luôn;
    }
}

Bất kỳ sự trợ giúp nào cũng được đánh giá cao. Cảm ơn

lá cờ in
Khối máy chủ cho cổng 80 không liên quan ở đây, bạn cần đăng khối máy chủ cho cổng 443.
lá cờ ph
@GeraldSchneider Chúng tôi không có Chặn máy chủ cho cổng 443 - NGNIX nằm sau Bộ cân bằng tải.
Richard Smith avatar
lá cờ jp
Sử dụng [`absolute_redirect off;`](http://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect) hoặc chỉ định rõ ràng `https` trong các câu lệnh `rewrite` và `return` của bạn như được mô tả trong Trả lời dưới đây.
Điểm:1
lá cờ cn

Tôi có thể thấy rằng nginx đang chuyển hướng đến /en-US/ trong trường hợp của bạn.

if ($uri !~ ^/(en-US|de)) {
  trả về 301 /$accept_language$uri$args;
}

Tôi cho rằng vì giao tiếp nội bộ (giữa LB và nginx) đang diễn ra trên http/80, nginx chỉ chuyển hướng bộ cân bằng tải qua http và đó là lý do tại sao bạn thấy http trong tiêu đề vị trí.

Tôi không chắc liệu các tệp .png có thực sự được gửi tới người dùng qua http hay không. Bạn có thể truy cập các tệp .png trực tiếp từ http không? Nếu không, quyền truy cập thực sự được phân phối qua https và giao tiếp http chỉ diễn ra trong nội bộ. Nếu có thể, bạn nên thiết lập chuyển hướng từ http sang https ở phía cân bằng tải.

Nếu bạn cũng muốn buộc https trong nội bộ, tôi sẽ thử như thế này:

trả lại 301 https://$host/$accept_lingu$uri$args;

Bạn cũng có thể kiểm tra tuyệt đối_redirect như được đề cập bởi Richard trong các bình luận.

lá cờ ph
Cảm ơn câu trả lời sâu sắc của bạn. Tôi đã thử tất cả chúng trước đây và cũng đã đặt LB để chuyển hướng HTTP sang HTTPS, cách này cũng hoạt động tốt. Tôi vừa thực hiện một phát hiện khác, Các tiêu đề phản hồi có giá trị vị trí khác nhau trên nhiều trình duyệt. Chrome: vị trí: http://host/en-US/assets/images/yammer.png FireFox: vị trí: https://host/en-US/assets/images/yammer.png Cạnh: vị trí: https://host/en-US/assets/images/yammer.png Bất kỳ ý tưởng nào có thể gây ra hành vi này?
GChuf avatar
lá cờ cn
Các trình duyệt làm nhiều thứ khác nhau, từ diễn giải css đến tiêu đề ... Tôi không thể trả lời câu hỏi của bạn, tôi thường chỉ chấp nhận thực tế là các trình duyệt khác nhau hoạt động khác nhau. Nếu bạn có thể xác nhận (ví dụ: với curl) rằng bạn không thể truy cập các tệp của mình thông qua http và rằng bạn đã được chuyển hướng, thì tôi sẽ không lo lắng về nội dung của tiêu đề.
lá cờ ph
Một lọn tóc hoạt động như mong đợi. Yêu cầu HTTP được chuyển hướng đến HTTPS và tôi thấy việc chuyển hướng được thực hiện bởi LB. Cảm ơn sự hỗ trợ của bạn cho đến nay.

Đă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.