Score:0

Nginx จัดการ SSL และพร็อกซีส่งผ่านไปยังแบ็กเอนด์ HTTP ในนักเทียบท่า แต่พยายามให้บริการเนื้อหาในเครื่องต่อไป

ธง cn

ฉันพยายามตั้งค่าสภาพแวดล้อมที่เขียนโดยนักเทียบท่าซึ่งคอนเทนเนอร์ Nginx ได้รับคำขอ HTTPS จัดการ SSL และย้อนกลับพร็อกซีไปยังแอป dotnet-core ซึ่งใช้งาน HTTP เท่านั้น

มีการกล่าวถึงหัวข้อนี้ที่นี่หลายครั้ง และฉันพยายามสร้างการกำหนดค่าขั้นต่ำที่ตอบสนองวัตถุประสงค์นี้ ( คล้ายกับสิ่งนี้: NGINX SSL Pass-thru และ Docker )

ปัญหาคือว่า Nginx ตอบกลับด้วย 404 แม้ว่าจะถูกกำหนดค่าให้ร้องขอ proxy_pass ไปยังแอป dotnet-core ซึ่งปัจจุบันตอบสนองเพียง 'Hello world' ต่อคำขอทั้งหมด

nginx_1 | 2021/06/25 04:07:54 [ข้อผิดพลาด] 24#24: ไม่พบ *1 "/etc/nginx/html/index.html" (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว) ลูกค้า: 210.61.91.199 เซิร์ฟเวอร์: tgdev.pillepalle1.de, คำขอ: "GET / HTTP/1.1", โฮสต์: "tgdev.pillepalle1.de"

ฉันเชื่อมต่อกับคอนเทนเนอร์และแตกการตั้งค่าจากที่นั่น

root@70e20feb4fae:/etc/nginx# ls -l

รวม 32
drwxr-xr-x 1 รูทรูท 4096 25 มิ.ย. 01:49 conf.d
-rw-r--r-- 1 รูท 1007 25 พฤษภาคม 12:28 fastcgi_params
-rw-r--r-- 1 รูทรูท 5290 25 พฤษภาคม 12:28 mime.types
lrwxrwxrwx 1 รูทรูท 22 25 พฤษภาคม 13:01 โมดูล -> /usr/lib/nginx/modules
-rw-r--r-- 1 รูทรูท 648 25 พฤษภาคม 13:01 น. nginx.conf
-rw-r--r-- 1 รูทรูท 636 25 พฤษภาคม 12:28 scgi_params
-rw-r--r-- 1 รูท 664 25 พฤษภาคม 12:28 น. uwsgi_params

root@70e20feb4fae:/etc/nginx# cat nginx.conf

ผู้ใช้ nginx;
worker_processes อัตโนมัติ

error_log /var/log/nginx/error.log ประกาศ;
pid /var/run/nginx.pid;


เหตุการณ์ {
    worker_connections 1024;
}


http {
    รวม /etc/nginx/mime.types;
    แอปพลิเคชัน default_type/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                      '$สถานะ $body_bytes_sent "$http_referer"'
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log หลัก;

    ส่งไฟล์บน;
    #tcp_nopush บน;

    keepalive_timeout 65;

    #gzip บน;

    รวม /etc/nginx/conf.d/*.conf;
}

root@70e20feb4fae:/etc/nginx/conf.d# ls

certbot.conf เริ่มต้น.conf

root@70e20feb4fae:/etc/nginx/conf.d# cat default.conf

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name localhost;

    ที่ตั้ง / {
        # ส่งคืน 301 https://$host/$request_uri;
        proxy_pass http://tgwebapp:80;
    }
}

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

    server_name localhost;

    ssl_certificate /etc/letsencrypt/live/this/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/this/privkey.pem;

    ที่ตั้ง / {
        proxy_pass http://tgwebapp:80;
    }
}

root@70e20feb4fae:/etc/nginx/conf.d# cat certbot.conf

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name localhost;

    ที่ตั้ง /.well-known/ {
        proxy_pass http://certbot;
    }
}

ไม่มีรายการใดที่ nginx ควรทำให้บริการ /etc/nginx/html/index.html. ฉันพลาดอะไรไป

Score:2
ธง us

คุณตั้งค่าโฮสต์เสมือนที่ซ้ำกันสองรายการ หนึ่งรายการ certbot.conf และที่สองใน default.conf. โฮสต์เสมือนทั้งสองทำงานบนพอร์ต 80 และ ชื่อเซิร์ฟเวอร์ โลคัลโฮสต์. ดังนั้น nginx จึงไม่สนใจอันอื่นและใช้อันแรกเสมอ

หากต้องการแก้ไขปัญหานี้ ให้นำออก certbot.conf และใช้สิ่งต่อไปนี้ใน default.conf:

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name localhost;

    ที่ตั้ง /.well-known/ {
        proxy_pass http://certbot;
    }

    ที่ตั้ง / {
        # ส่งคืน 301 https://$host/$request_uri;
        proxy_pass http://tgwebapp:80;
    }
}

โพสต์คำตอบ

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