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.