0

My technology stack is,

Django
Graphql
nginx
gunicorn

Below is the function which is used to reset the password.

It is using GraphQLClient call where I am providing api endpoint to reset the password.

def password_reset(request, token):
    message = ''
    messageStatus = False
    if request.method =='POST':
        password1 = request.POST.get('password1','')
        password2 = request.POST.get('password2','')
        client = GraphQLClient('http://leagueoftennis.com/graphql/')
        query = """
           mutation PasswordReset($password1: String!, $password2:String!, $token:String!){
             passwordReset(newPassword1: $password1, newPassword2: $password2, token: $token) {
               errors
               success
             }
           }
        """        
        variables = {'token': token, 'password1':password1, 'password2':password2}
        result = client.execute(query, variables)
        result_json = json.loads(result)
        if result_json['data']['passwordReset']['success']:
           message = "Your password has been set."
           messageStatus = True
        elif result_json['data']['passwordReset']['errors']:
            if 'nonFieldErrors' in result_json['data']['passwordReset']['errors']:
                message = result_json['data']['passwordReset']['errors']['nonFieldErrors'][0]['message']
            elif 'newPassword2' in result_json['data']['passwordReset']['errors']:
                message = result_json['data']['passwordReset']['errors']['newPassword2'][0]['message']            
            else:
                message = "Something Went Wrong. Try Again!"
        else:
           message = "Link is expired!"
    context = {
       'messageStatus': messageStatus,
       'message': message,
       'token': token,
    }
    template = loader.get_template('account/password_reset.html')
    return HttpResponse(template.render(context, request))

Above method is called when user clicks on below link,

http://leagueoftennis.com/activate/eyJlbWFpbCI6ImthbHBlc2h0YXdkZUBvdXRsb29rLmNvbSIsImFjdGlvbiI6ImFjdGl2YXRpb24ifQ:1qMLtK:IUaG2ZYF1vdavJhuVzXAsYotR3agrfPqnJzTpmijRU0

But in return I am getting 502 bad gateway error.

Below is my nginx config,

upstream sports_league {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://sports_league;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /code/staticfiles/;
    }

}

This is what I am seeing in logs

68.203.0.28 - - [20/Jul/2023:05:20:41 +0000] "GET /activate/eyJlbWFpbCI6ImthbHBlc2h0YXdkZUBvdXRsb29rLmNvbSIsImFjdGlvbiI6ImFjdGl2YXRpb24ifQ:1qMLtK:IUaG2ZYF1vdavJhuVzXAsYotR3agrfPqnJzTpmijRU0 HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "-"
2023/07/20 05:20:41 [error] 23#23: *2 upstream prematurely closed connection while reading response header from upstream, client: xx.xx.xx.xx, server: , request: "GET /activate/eyJlbWFpbCI6ImthbHBlc2h0YXdkZUBvdXRsb29rLmNvbSIsImFjdGlvbiI6ImFjdGl2YXRpb24ifQ:1qMLtK:IUaG2ZYF1vdavJhuVzXAsYotR3agrfPqnJzTpmijRU0 HTTP/1.1", upstream: "http://172.19.0.3:8000/activate/eyJlbWFpbCI6ImthbHBlc2h0YXdkZUBvdXRsb29rLmNvbSIsImFjdGlvbiI6ImFjdGl2YXRpb24ifQ:1qMLtK:IUaG2ZYF1vdavJhuVzXAsYotR3agrfPqnJzTpmijRU0", host: "leagueoftennis.com"

Please suggest what I am doing wrong and needs to be fixed.

0 Answers0