今天公司某运营系统某接口出现502 Bad Gateway异常.
解决问题思路:去服务器查看nginx异常日志,查找nginx异常日志分析问题
1.使用sudo nginx -t查看nginx配置文件位置
ais-di@parrot:/etc/nginx$ sudo nginx -t
[sudo] password for ais-di:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2.查看nginx.conf配置文件查找其异常日志存在的位置::
ais-di@parrot:/etc/nginx$ cat /etc/nginx/nginx.conf | grep error.log
error_log /var/log/nginx/error.log;
3.查看异常日志文件,找到自己主机的请求
ais-di@parrot:/etc/nginx$ sudo cat /var/log/nginx/error.log | grep 10.25.8.103
2022/04/19 10:32:24 [error] 893#893: *7554500 connect() failed (111: Connection refused) while connecting to upstream, client: 10.25.8.103, server: marsops.i-tetris.com, request: "GET /api/nlu/sp/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_esp_function_on_20220417 HTTP/1.1", upstream: "http://10.86.11.38:8877/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_esp_function_on_20220417", host: "ais.i-tetris.com:9890", referrer: "http://ais.i-tetris.com:9890/"
2022/04/19 10:32:27 [error] 893#893: *7554507 connect() failed (111: Connection refused) while connecting to upstream, client: 10.25.8.103, server: marsops.i-tetris.com, request: "GET /api/nlu/sp/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_esp_function_on_20220417 HTTP/1.1", upstream: "http://10.86.11.38:8877/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_esp_function_on_20220417", host: "ais.i-tetris.com:9890", referrer: "http://ais.i-tetris.com:9890/"
2022/04/19 10:43:33 [error] 893#893: *7554621 connect() failed (111: Connection refused) while connecting to upstream, client: 10.25.8.103, server: marsops.i-tetris.com, request: "GET /api/nlu/sp/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_auto_emergency_braking_on_20220417 HTTP/1.1", upstream: "http://10.86.11.38:8877/wa/single_pre_annotation?table=expr_model_inbox&setName=Abasic_kaidi_jiaqi_auto_emergency_braking_on_20220417", host: "ais.i-tetris.com:9890", referrer: "http://ais.i-tetris.com:9890/"
4.去查看配置文件查看该服务是否正常启动
当查看nginx.conf文件时,并没有发现server块,是因为其被include在了其他的配置文件中,nginx支持多文件配置找到相应的文件,去查看该服务请求的端口
server {
listen 9890;
root /var/www/html/nlu;
index index.php index.html index.htm index.nginx-debian.html;
server_name marsops.i-tetris.com;
client_max_body_size 100M;
location / {
try_files $uri $uri/ =404;
}
location /api/nlu/review/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
proxy_pass http://127.0.0.1:20731/;
}
location /api/nlu/sp/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
proxy_pass http://10.86.11.38:8877/;
}
}
请求的接口前缀就是“/api/nlu/sp/”,发现实质是请求10.86.11.38:8877服务,而登录到该服务器上发现该服务未启动。启动即解决问题