Tôi sử dụng nginx trong MacOS của mình để kiểm tra xác thực của bên thứ ba như Google và Twitter trong máy chủ cục bộ. Kết quả là, trên trang web địa phương của tôi https://localhost:8000/...
, tôi có thể tham gia với www.funfun.io
để xác thực bên thứ ba.
Đây là tệp cấu hình nginx:
worker_processes 1;
sự kiện {
công_nhân kết_nối 1024 ;
}
http {
bao gồm mime.types;
ứng dụng default_type/octet-stream;
gửi tệp trên;
keepalive_timeout 65;
log_format my_log '{ "thời gian": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"trạng thái": "$trạng thái", '
'"yêu cầu": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"máy chủ": "$host", '
'"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;
ngược dòng funfun {
máy chủ 178.62.87.72:443;
}
người phục vụ {
nghe 443 ssl;
máy chủ_tên máy chủ cục bộ;
ssl_certificate /etc/ssl/localhost/localhost.crt;
ssl_certificate_key /etc/ssl/localhost/localhost.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
bật ssl_prefer_server_ciphers;
ssl_session_timeout 1d;
tắt ssl_dập ghim;
tắt ssl_stapling_verify;
add_header Strict-Transport-Security max-age=15768000;
add_header X-Frame-Options "";
proxy_ssl_name "www.funfun.io";
proxy_ssl_server_name bật;
vị trí ~ /xã hộiĐăng nhậpSuccess {
viết lại ^ '/#/socialLoginSuccess' chuyển hướng;
}
vị trí ~ /auth/(.*) {
proxy_pass https://funfun/10studio/auth/$1?$query_string;
proxy_set_header Máy chủ lưu trữ cục bộ;
}
}
bao gồm các máy chủ/*;
}
Đây là nhật ký đăng nhập.
{ "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%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapauthmail.com%2Finfoethuser=openFidethuser. 0&prompt=đồng ý 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": "-" }
Quá trình đăng nhập như sau:
- Tôi bắt đầu với một trang web
https://localhost:8000/#/start
, nơi có một nút để đăng nhập bằng Google.
- Tôi nhấp vào nút đó, có url là
https://localhost/10studio/auth/google
.
- trang web của
https://accounts.google.com/...
được hiển thị nơi chúng tôi có thể chọn tài khoản Google
- Sau khi đăng nhập thành công, trang web của
https://localhost/#/socialLoginSuccess
được hiển thị.
Tất cả các bước đều hoạt động tốt trừ bước cuối cùng; trận chung kết https://localhost/#/socialLoginSuccess
hiển thị trang web của Chào mừng đến nginx!
. url chính xác phải là https://localhost:8000/#/socialLoginSuccess
.
Có ai biết cách tôi có thể sửa đổi tệp cấu hình nginx sao cho url cuối cùng dẫn đến https://localhost:8000/#/socialLoginSuccess
?
Chỉnh sửa 1:
Đây là một số mã của funfun.io:
(* dưới app.js *)
var _10studio = yêu cầu('./routes/10studio');
app.use('/10studio', _10studio);
(* bên dưới routes/10studio.js *)
router.get('/auth/google', passport.authenticate('10studio-google', {
phạm vi: ['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',
failRedirect: '/auth/signinFailure',
failFlash: đúng
})))
router.get('/auth/signinSuccess', function (req, res, next) {
res.redirect("/socialLoginSuccess");
})