Score:0

เขียนใหม่เป็น https://localhost:8000 แทนที่จะเป็น https://localhost

ธง kr

ฉันใช้ nginx ใน MacOS เพื่อทดสอบการรับรองความถูกต้องของบุคคลที่สาม เช่น Google และ Twitter ใน localhost เป็นผลให้บนเว็บไซต์ท้องถิ่นของฉัน https://localhost:8000/...ฉันสามารถมีส่วนร่วมกับ www.funfun.io สำหรับการรับรองความถูกต้องของบุคคลที่สาม

นี่คือไฟล์กำหนดค่า nginx:

ผู้ปฏิบัติงาน_กระบวนการ 1;

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

http {
    รวม mime.types;
    แอปพลิเคชัน default_type/octet-stream;
    ส่งไฟล์บน;
    keepalive_timeout 65;

    log_format my_log '{ "เวลา": "$time_iso8601", '
        '"remote_addr": "$remote_addr", '
        '"สถานะ": "$สถานะ", '
        '"คำขอ": "$คำขอ", '
        '"request_method": "$request_method", '
        '"http_referrer": "$http_referer", '
        '"http_x_forwarded_for": "$http_x_forwarded_for", '
        '"โฮสต์": "$โฮสต์", '
        '"server_name": "$server_name", '
        '"upstream_address": "$upstream_addr", '
        '"upstream_status": "$upstream_status", }';

    access_log /usr/local/var/log/nginx/my_log_access.log my_log;

    ต้นน้ำ funfun {
        เซิร์ฟเวอร์ 178.62.87.72:443;
    }

    เซิร์ฟเวอร์ {
        ฟัง 443 ssl;
        server_name localhost;
        ssl_certificate /etc/ssl/localhost/localhost.crt;
        ssl_certificate_key /etc/ssl/localhost/localhost.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        เปิด ssl_prefer_server_ciphers;
        ssl_session_timeout 1d;
        ปิด ssl_stapling;
        ปิด ssl_stapling_verify;
        add_header การขนส่งที่เข้มงวด - ความปลอดภัยสูงสุดอายุ = 15768000;
        add_header X-Frame-ตัวเลือก "";
        proxy_ssl_name "www.funfun.io";
        เปิด proxy_ssl_server_name;

        ตำแหน่ง ~ /socialLoginSuccess {
            เขียนใหม่ ^ '/#/socialLoginSuccess' เปลี่ยนเส้นทาง;
        }

        ตำแหน่ง ~ /auth/(.*) {
            proxy_pass https://funfun/10studio/auth/$1?$query_string;
            proxy_set_header โฮสต์ localhost;
        }
    }
    รวมเซิร์ฟเวอร์/*;
}

นี่คือบันทึกการลงชื่อเข้าใช้

{ "เวลา": "2021-11-11T01:02:47+01:00", "remote_addr": "127.0.0.1", "สถานะ": "302", "คำขอ": "GET /10studio/auth/ google HTTP/1.1", "request_method": "GET", "http_referrer": "https://localhost:8000/", "http_x_forwarded_for": "-", "host": "localhost", "server_name": " localhost", "upstream_address": "178.62.87.72:443", "upstream_status": "302" }
{ "เวลา": "2021-11-11T01:02:50+01:00", "remote_addr": "127.0.0.1", "สถานะ": "302", "คำขอ": "GET /auth/google/ โทรกลับ?code=4%2F0AX4XfWihw3erIiZok3Yk8jZ5hjcg4sT35YLuZAp5h3qIDZvC_BuHSlvbRiTSh4Sobo_Wbw&scope=email+profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapiuse.com%2Fuserinfo.com%2 0&prompt=consent HTTP/1.1", "request_method": "GET", "http_referrer": "https://accounts.google.com/", "http_x_forwarded_for": "-", "host": "localhost", " server_name": "localhost", "upstream_address": "178.62.87.72:443", "upstream_status": "302" }
{ "time": "2021-11-11T01:02:50+01:00", "remote_addr": "127.0.0.1", "status": "302", "request": "GET /auth/signinSuccess HTTP /1.1", "request_method": "GET", "http_referrer": "https://accounts.google.com/", "http_x_forwarded_for": "-", "host": "localhost", "server_name": " localhost", "upstream_address": "178.62.87.72:443", "upstream_status": "302" }
{ "เวลา": "2021-11-11T01:02:50+01:00", "remote_addr": "127.0.0.1", "สถานะ": "302", "คำขอ": "GET /socialLoginSuccess HTTP/1.1 ", "request_method": "GET", "http_referrer": "https://accounts.google.com/", "http_x_forwarded_for": "-", "host": "localhost", "server_name": "localhost" , "upstream_address": "-", "upstream_status": "-" }

ขั้นตอนการลงชื่อเข้าใช้มีดังนี้:

  • ฉันเริ่มต้นด้วยหน้าเว็บ https://localhost:8000/#/startซึ่งมีปุ่มให้ลงชื่อเข้าใช้ด้วย Google
  • ฉันคลิกที่ปุ่มนั้น ซึ่ง url ของมันคือ https://localhost/10studio/auth/google.
  • หน้าเว็บของ https://accounts.google.com/... จะแสดงขึ้นมาโดยที่เราสามารถเลือกบัญชี Google ได้
  • หลังจากลงชื่อเข้าใช้สำเร็จ หน้าเว็บของ https://localhost/#/socialLoginSuccess จะปรากฏขึ้น

ขั้นตอนทั้งหมดทำงานได้ดียกเว้นขั้นตอนสุดท้าย สุดท้าย https://localhost/#/socialLoginSuccess แสดงหน้าเว็บของ ยินดีต้อนรับสู่ nginx!. URL ที่ถูกต้องควรเป็น https://localhost:8000/#/socialLoginSuccess.

มีใครรู้บ้างว่าฉันจะแก้ไขไฟล์คอนฟิกูเรชัน nginx ได้อย่างไร ซึ่ง URL สุดท้ายจะนำไปสู่ https://localhost:8000/#/socialLoginSuccess?

แก้ไข 1:

นี่คือโค้ดของ funfun.io:

(* ภายใต้ app.js *)

var _10studio = ต้องการ ('./routes/10studio');
app.use('/10studio', _10studio);
(*ใต้ route/10studio.js *)

router.get('/auth/google', passport.authenticate('10studio-google', {
    ขอบเขต: ['https://www.googleapis.com/auth/userinfo.profile',
        'https://www.googleapis.com/auth/userinfo.email']
}));

router.get('/auth/google/callback', passport.authenticate('10studio-google', {
    การเปลี่ยนเส้นทางสำเร็จ: '/auth/signinSuccess',
    การเปลี่ยนเส้นทางล้มเหลว: '/auth/signinFailure',
    FailureFlash: จริง
}))

router.get('/auth/signinSuccess', ฟังก์ชัน (req, res, ถัดไป) {
    res.redirect("/socialLoginSuccess");
})
us flag
ฉันคิดว่าคุณต้องการย้อนกลับการรับส่งข้อมูลทั้งหมดผ่านพร็อกซีผ่านพอร์ต 443 และไม่ใช้พอร์ตที่ไม่ได้มาตรฐานไปยังภายนอก นอกจากนี้ ฉันคิดว่า nginx ไม่สามารถแก้ไข URL ที่ผู้เยี่ยมชมถูกส่งไปหลังจากการพิสูจน์ตัวตนสำเร็จ คุณควรแก้ไขเอนทิตีที่สร้าง URL หลังจากการรับรองความถูกต้อง
kr flag
@TeroKilkanen ฉันได้เพิ่มโค้ดของ funfun.io ลงใน OP ฉันไม่เห็นวิธีแก้ไขเอนทิตีที่นำไปสู่ ​​`https://localhost:8000/#/socialLoginSuccess`
kr flag
ฉันพยายามแทนที่ `proxy_set_header Host localhost;` ด้วย `proxy_set_header Host localhost:8000;` ใน nginx แต่ไม่ได้ผล

โพสต์คำตอบ

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