Score:1

NGNIX บังคับใช้ HTTPS

ธง ph

สำหรับ Webapp (Angular App) ของฉัน เราใช้ NGNIX เป็นเว็บเซิร์ฟเวอร์ ฉันมีงานที่ต้องตรวจสอบให้แน่ใจว่าโหลดเนื้อหา/รูปภาพทั้งหมดผ่าน HTTPS

ในเครื่องมือ Dev ของเบราว์เซอร์ ฉันเห็นว่าคำขอถูกส่งผ่าน HTTPS อย่างไรก็ตาม ส่วนหัวของตำแหน่งการตอบสนองจะกลับมาเป็น HTTP URL (ดูภาพหน้าจอด้านล่าง)

ภาพหน้าจอจากเครื่องมือ dev ของเบราว์เซอร์

นี่คือการกำหนดค่า NGNIX ปัจจุบัน:

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name localhost;
    รูท /usr/share/nginx/html;

    # ฆ่าแคช
    add_header แก้ไขล่าสุด $date_gmt;
    add_header Cache-Control 'ไม่มีที่จัดเก็บ ไม่มีแคช';
    if_modified_since ปิด;
    หมดอายุ;
    etag ปิด;

    #บังคับใช้HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" เสมอ;

    # ปิด iframe
    add_header x-frame-options "SAMEORIGIN" เสมอ;

    # ตรวจจับและปฏิเสธ CRLF
    ถ้า ($request_uri ~* "%0A|%0D" ) {
      คืน 400;
    }

    # สำรองเป็นภาษาเริ่มต้นหากไม่มีการตั้งค่ากำหนดโดยเบราว์เซอร์
    ถ้า ($accept_language ~ "^$") {
      ตั้ง $accept_language "เด";
    }

    # เปลี่ยนเส้นทาง "/" ไปยังแอป Angular ในภาษาที่ต้องการของเบราว์เซอร์
    เขียนใหม่ ^/$ /$accept_language ถาวร;

    ถ้า ($uri !~ ^/(en-US|de)) {
      ส่งคืน 301 /$accept_language$uri$args;
    }

    # ทุกอย่างภายใต้แอป Angular จะถูกเปลี่ยนเส้นทางไปยัง Angular ในภาษาที่ถูกต้องเสมอ
    ตำแหน่ง ~ ^/(en-US|de) {
        try_files $uri$args $uri$args/ /$1/index.html;

      # เพิ่มส่วนหัวการรักษาความปลอดภัยจากไฟล์แยกต่างหาก
      # รวม /etc/nginx/security-headers.conf;
    }

    สถานที่ /สุขภาพ {
      access_log off;
      คืน 200;
      add_header ประเภทเนื้อหา ข้อความ/ธรรมดา;
      #บังคับใช้HSTS
      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" เสมอ;
    }
}

ความช่วยเหลือใด ๆ ที่ได้รับความนิยมอย่างสูง ขอบคุณ

in flag
บล็อกเซิร์ฟเวอร์สำหรับพอร์ต 80 ค่อนข้างไม่เกี่ยวข้องที่นี่ คุณต้องโพสต์บล็อกเซิร์ฟเวอร์สำหรับพอร์ต 443
ph flag
@GeraldSchneider เราไม่มีการบล็อกเซิร์ฟเวอร์สำหรับพอร์ต 443 - NGNIX อยู่เบื้องหลัง Load Balancer
Richard Smith avatar
jp flag
ใช้ [`absolute_redirect off;`](http://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect) หรือระบุ `https` อย่างชัดเจนในคำสั่ง 'rewrite' และ 'return' ตามที่อธิบายไว้ใน คำตอบด้านล่าง
Score:1
ธง cn

ฉันเห็นว่า nginx กำลังเปลี่ยนเส้นทางไปที่ /en-US/ ในกรณีของคุณ

ถ้า ($uri !~ ^/(en-US|de)) {
  ส่งคืน 301 /$accept_language$uri$args;
}

ฉันคิดว่าเนื่องจากการสื่อสารภายใน (ระหว่าง LB และ nginx) เกิดขึ้นที่ http/80 ดังนั้น nginx จึงเปลี่ยนเส้นทางโหลดบาลานเซอร์ไปที่ http และนั่นคือเหตุผลที่คุณเห็น http ในส่วนหัวของตำแหน่ง

ฉันไม่แน่ใจว่าไฟล์ .png ส่งถึงผู้ใช้ผ่าน http จริงหรือไม่ คุณสามารถเข้าถึงไฟล์ .png โดยตรงจาก http ได้หรือไม่ หากไม่เป็นเช่นนั้น การเข้าถึงจะถูกส่งผ่าน https และการสื่อสารผ่าน HTTP จะเกิดขึ้นเป็นการภายในเท่านั้น หากทำได้ คุณควรตั้งค่าการเปลี่ยนเส้นทางจาก http เป็น https ที่ฝั่งตัวโหลดบาลานเซอร์

หากคุณต้องการบังคับ https ภายในด้วย ฉันจะลองทำดังนี้:

ส่งคืน 301 https://$host/$accept_language$uri$args;

คุณยังสามารถตรวจสอบ Absolute_redirect ตามที่ริชาร์ดกล่าวไว้ในความคิดเห็น

ph flag
ขอบคุณสำหรับคำตอบที่ชาญฉลาดของคุณ ฉันลองทั้งหมดแล้วและตั้งค่า LB ให้เปลี่ยนเส้นทาง HTTP เป็น HTTPS ซึ่งก็ใช้งานได้ดีเช่นกัน ฉันเพิ่งค้นพบอีกครั้ง ส่วนหัวการตอบกลับมีค่าตำแหน่งที่แตกต่างกันในเบราว์เซอร์หลายตัว Chrome: ตำแหน่ง: http://host/en-US/assets/images/yammer.png FireFox: ที่ตั้ง: https://host/en-US/assets/images/yammer.png Edge: สถานที่: https://host/en-US/assets/images/yammer.png ความคิดใดที่อาจทำให้เกิดพฤติกรรมนี้
GChuf avatar
cn flag
เบราว์เซอร์ทำสิ่งต่างๆ มากมายแตกต่างกัน ตั้งแต่การแปล css ไปจนถึงส่วนหัว ... ฉันไม่สามารถตอบคำถามของคุณได้ ฉันมักจะยอมรับข้อเท็จจริงที่ว่าเบราว์เซอร์ต่างๆ ทำงานแตกต่างกัน หากคุณสามารถยืนยัน (เช่น curl) ว่าคุณไม่สามารถเข้าถึงไฟล์ของคุณผ่าน http และคุณถูกเปลี่ยนเส้นทาง ฉันจะไม่กังวลเกี่ยวกับสิ่งที่ส่วนหัวพูด
ph flag
ขดทำงานตามที่คาดไว้ คำขอ HTTP ถูกเปลี่ยนเส้นทางไปยัง HTTPS และฉันเห็นว่า LB ทำการเปลี่ยนเส้นทางแล้ว ขอบคุณสำหรับการสนับสนุนของคุณจนถึงตอนนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา