Score:0

กำหนดค่า Nginx ไม่ถูกต้อง?

ธง es

เมื่อฉันเรียกดูเว็บไซต์ wordpress ระบบจะเปลี่ยนเส้นทางไปที่ https โดยอัตโนมัติ

อย่างไรก็ตาม ฉันได้รับ TTFB ขนาดใหญ่ และฉันเชื่อว่าอาจเป็นเพราะข้อผิดพลาดในการกำหนดค่าพื้นฐาน

ในขณะนี้ฉันมีการกำหนดค่าต่อไปนี้ (HTTPS ยังคงใช้งานได้ซึ่งฉันไม่เข้าใจ)

เซิร์ฟเวอร์ {
    ฟัง 8080 ;
    ฟัง [::]:8080 ;

    ปิด port_in_redirect;
    Absolute_redirect ปิด;
...

ถ้าฉันทำการอัปเดตต่อไปนี้

เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    ฟัง [::]:443 ssl ;

    ปิด port_in_redirect;
    Absolute_redirect ปิด;

ไซต์ไม่สามารถเข้าถึงได้อีกต่อไป

SSL ทำงานอย่างไรเมื่อเซิร์ฟเวอร์กำลังฟัง 8080 ตั้งแต่แรก ฉันไม่มี 301 ในการกำหนดค่าของฉัน

แก้ไข: การกำหนดค่าแบบเต็ม - เวอร์ชันด้านล่างนี้จะเปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมดไปยัง https:// อย่างถูกต้อง


เซิร์ฟเวอร์ {
    ฟัง 8080 ;
    ฟัง [::]:8080 ;

    add_header การขนส่งที่เข้มงวด - ความปลอดภัย "อายุสูงสุด = 31536000; includeSubDomains; โหลดล่วงหน้า";
    add_header X-Frame-ตัวเลือกปฏิเสธ;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-การป้องกัน "1; mode=block";

    large_client_header_buffers 4 64k;
    proxy_max_temp_file_size 0;

    รูท /home/site/wwwroot;
    ดัชนี index.php index.html index.htm;
    server_name domain.co.uk www.domain.co.uk;

    access_log off;
    error_log off;

    ปิด port_in_redirect;
    Absolute_redirect ปิด;

    ที่ตั้ง / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # เปลี่ยนเส้นทางหน้าข้อผิดพลาดของเซิร์ฟเวอร์ไปยังหน้าสแตติก /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    ตำแหน่ง = /50x.html {
        รูท /html/;
    }

    เปิด gzip;

    gzip_vary บน;
    gzip_proxyed ใด ๆ ;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    รูปภาพ gzip_types/รูปภาพ svg+xml/ข้อความไอคอน x/ข้อความล้วน/ข้อความ html/ข้อความ xml/ข้อความ css/แอปพลิเคชันจาวาสคริปต์/แอปพลิเคชัน xml/แอปพลิเคชัน xhtml+xml/แอปพลิเคชัน rss+xml/แอปพลิเคชันจาวาสคริปต์/แอปพลิเคชัน x-javascript/x -font-ttf application/vnd.ms-fontobject font/opentype font/ttf font/eot font/otf image/vnd.microsoft.icon;

    ตำแหน่ง ~* \.(eot|ttf|woff|woff2|webmanifest)$ {
       add_header Access-Control-Allow-Origin *;
    }

    ตำแหน่ง ~* \.(css|js|ico|gif|jpeg|jpg|webp|png|svg|eot|otf|woff|woff2|ttf|ogg)$ {
       หมดอายุสูงสุด
    }

    ตำแหน่ง ~ [^/]\.php(/|$) {

        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        fastcgi_pass 127.0.0.1:9000;
        รวม fastcgi_params;
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        เปิด fastcgi_intercept_errors;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 3600;
        fastcgi_read_timeout 3600;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }
}

Nikita Kipriyanov avatar
za flag
กรณีแรกไม่ได้กล่าวถึง `ssl` อย่างมากก็ทำงานในโหมดข้อความล้วน เพื่อให้กรณีที่สองทำงานได้ คุณต้องระบุคีย์ส่วนตัวและห่วงโซ่ใบรับรองด้วย (ไม่มีการระบุในโพสต์ว่าคุณมี) และโปรดแสดงข้อความ Nginx ระหว่างการเริ่มต้นและเอาต์พุต `ss -lnpt` หลังจากเริ่มต้น (หากสำเร็จ) ในกรณีที่สอง
us flag
โปรดเพิ่มผลลัพธ์ของ `nginx -T` ให้กับคำถาม เพื่อให้เราได้เห็นการกำหนดค่า nginx แบบเต็ม
Score:0
ธง za

บนท่าเรือ 8080 มันกำลังตื่น ไม่มี SSLในรูปแบบข้อความล้วน สำหรับการเพิ่ม SSL แค่เปลี่ยนอย่างเดียวไม่พอ ฟัง 8080 เข้าไปข้างใน ฟัง 443 ssl. อย่างน้อยคุณต้องเพิ่มบรรทัดที่ระบุเชนใบรับรองและคีย์ส่วนตัวของเซิร์ฟเวอร์:

ฟัง [::]:443 ssl;
ฟัง 443 ssl;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;

ห่วงโซ่ทั้งหมดคือการต่อใบรับรองทั้งหมดในรูปแบบ PEM อย่างง่าย (ซึ่งเป็นไฟล์ข้อความที่มีข้อมูลที่เข้ารหัส Base64 อยู่ภายใน) ใบรับรองใบแรกคือเซิร์ฟเวอร์ของคุณที่ตรงกับคีย์ส่วนตัว จากนั้น CA ของผู้ออกใบรับรองทันที และอื่นๆ จนถึง แต่ไม่รวม root CA

หากมีหลายชื่อในใบรับรอง (ใบรับรองสมัยใหม่จะใช้เสมอ เรื่องทางเลือกชื่อ ซึ่งอนุญาตให้ระบุชื่อโดเมนได้มากกว่าหนึ่งชื่อ) แล้วแต่คุณจะระบุใน ชื่อเซิร์ฟเวอร์ ตัวเลือก. คุณสามารถระบุได้เฉพาะชื่อเซิร์ฟเวอร์ที่มีอยู่ในฟิลด์ SAN ของใบรับรอง แต่คุณไม่จำเป็นต้องใช้ทั้งหมด(หากคุณระบุสิ่งอื่นนอกเหนือไปจากที่มีอยู่ในฟิลด์ SAN ลูกค้าของคุณจะแสดงข้อผิดพลาดของใบรับรอง SSL ว่าไม่ใช่ของโดเมน เมื่อพวกเขาเข้าถึงเซิร์ฟเวอร์ของคุณด้วยชื่อนั้น) ในกรณีของคุณ ใบรับรองต้องถูกต้อง อย่างน้อยก็สำหรับทั้งคู่ โดเมน.co.uk และ www.domain.co.uk.

ดู คู่มือ Nginx HTTPS สำหรับรายละเอียด ถ้าคุณใช้ ใบรับรอง (ไคลเอ็นต์ ACME) ที่มีปลั๊กอินติดตั้ง nginx เพื่อรับใบรับรอง มันจะกำหนดค่าทุกอย่างโดยอัตโนมัติ หากคุณได้รับใบรับรอง "ด้วยตนเอง" คุณต้องเพิ่มตัวเลือกการกำหนดค่าเหล่านี้ด้วยตนเองด้วย

โพสต์คำตอบ

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