Puncte:0

Rescrieți la https://localhost:8000 în loc de https://localhost

drapel kr

Folosesc nginx în MacOS-ul meu pentru a testa autentificări de la terți, cum ar fi Google și Twitter în localhost. Drept urmare, pe site-ul meu local https://localhost:8000/..., aș putea să mă angajez www.funfun.io pentru autentificări de la terți.

Iată fișierul de configurare nginx:

lucrător_procese 1;

evenimente {
    conexiuni_muncitor 1024;
}

http {
    include mime.tipuri;
    aplicație de tip_default/octet-stream;
    sendfile activat;
    keepalive_timeout 65;

    log_format my_log '{ "time": "$time_iso8601", '
        '"remote_addr": "$remote_addr", '
        '"status": "$status", '
        '"request": "$request", '
        '"request_method": "$request_method", '
        '"http_referrer": "$http_referer", '
        '"http_x_forwarded_for": "$http_x_forwarded_for", '
        '"gazdă": "$gazdă", '
        '"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;

    distracție în amonte {
        server 178.62.87.72:443;
    }

    Server {
        asculta 443 ssl;
        nume_server gazdă locală;
        certificat_ssl /etc/ssl/localhost/localhost.crt;
        ssl_certificate_key /etc/ssl/localhost/localhost.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers activat;
        ssl_session_timeout 1d;
        ssl_capsare off;
        ssl_stapling_verify off;
        add_header Strict-Transport-Security max-age=15768000;
        add_header X-Frame-Options "";
        proxy_ssl_name "www.funfun.io";
        proxy_ssl_server_name activat;

        locație ~ /socialLoginSuccess {
            rescrie redirecționarea ^ „/#/socialLoginSuccess”;
        }

        locație ~ /auth/(.*) {
            proxy_pass https://funfun/10studio/auth/$1?$query_string;
            proxy_set_header Gazdă localhost;
        }
    }
    include servere/*;
}

Iată jurnalele de conectare.

{ "time": "2021-11-11T01:02:47+01:00", "remote_addr": "127.0.0.1", "status": "302", "request": "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" }
{ "time": "2021-11-11T01:02:50+01:00", "remote_addr": "127.0.0.1", "status": "302", "request": "GET /auth/google/ callback?code=4%2F0AX4XfWihw3erIiZok3Yk8jZ5hjcg4sT35YLuZAp5h3qIDZvC_BuHSlvbRiTSh4Sobo_Wbw&scope=email+profile+https%3A%2F%2Fwww.googleapis.com%2Fwww.googleapis.com%2F2F0A%2F%3A%2F%2Fwww.googleapis.com%2F2F0AX4XfWihw3erIiZok3Yk8jZ5hjcg4sT35YLuZAp5h3qIDZvC_BuHSlvbRiTSh4Sobo_Wbw&scope=email+profile+https%3A%2F%2Fwww.googleapis.com%2F%2F0apis.com 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" }
{ "time": "2021-11-11T01:02:50+01:00", "remote_addr": "127.0.0.1", "status": "302", "request": "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": "-" }

Procesul de conectare este următorul:

  • Încep cu o pagină web https://localhost:8000/#/start, unde există un buton pentru a vă conecta de către Google.
  • Dau clic pe acel buton, a cărui adresă URL este https://localhost/10studio/auth/google.
  • Pagina web a https://accounts.google.com/... este afișat unde am putea alege un cont Google
  • După conectarea cu succes, pagina web a https://localhost/#/socialLoginSuccess este afisat.

Toți pașii funcționează bine, cu excepția ultimului; finala https://localhost/#/socialLoginSuccess afișează pagina web a Bine ați venit la Nginx!. Adresa URL corectă ar trebui să fie https://localhost:8000/#/socialLoginSuccess.

Știe cineva cum aș putea modifica fișierul de configurare nginx astfel încât URL-ul final să conducă la https://localhost:8000/#/socialLoginSuccess?

Editare 1:

Iată câteva coduri ale funfun.io:

(* sub app.js *)

var _10studio = require('./routes/10studio');
app.use('/10studio', _10studio);
(* sub routes/10studio.js *)

router.get('/auth/google', passport.authenticate('10studio-google', {
    domeniul de aplicare: ['https://www.googleapis.com/auth/userinfo.profile',
        „https://www.googleapis.com/auth/userinfo.email”]
}));

router.get('/auth/google/callback', passport.authenticate('10studio-google', {
    successRedirect: „/auth/signinSuccess”,
    failureRedirect: „/auth/signinFailure”,
    failureFlash: adevărat
}))

router.get('/auth/signinSuccess', function (req, res, next) {
    res.redirect("/socialLoginSuccess");
})
drapel us
Cred că doriți să inversați proxy tot traficul prin portul 443 și să nu folosiți porturi non-standard către exterior. De asemenea, cred că nginx nu poate modifica adresa URL la care este trimis vizitatorul după o autentificare cu succes. Ar trebui să modificați entitatea care generează adresa URL după autentificare.
drapel kr
@TeroKilkanen Am adăugat un cod de funfun.io la OP. Nu văd cum să modific entitatea astfel încât să conducă la `https://localhost:8000/#/socialLoginSuccess`.
drapel kr
Am încercat să înlocuiesc `proxy_set_header Host localhost;` cu `proxy_set_header Host localhost:8000;` în nginx, dar nu a ajutat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.