客户端调用API时HTTP与HTTPS请求均返回302重定向的问题排查求助
大家好,我最近碰到个头疼的问题:不管用HTTP还是HTTPS调用我们的API接口(比如https://app.ardracloud.com/api/deviceconnect或者http://app.ardracloud.com/api/deviceconnect),服务器都会返回302重定向,导致客户端没法正常获取API数据。
我把当前的Nginx配置贴在下面,麻烦帮忙看看哪里可能出了问题:
server { listen 66.66.66.66:443 ssl; listen 443; listen [::]:443; server_name app.ardracloud.com; server_name www.app.ardracloud.com; server_name ipv4.app.ardracloud.com; ssl_certificate /opt/psa/var/certificates/******; ssl_certificate_key /opt/psa/var/certificates/******; client_max_body_size 134217728; access_log "/var/www/vhosts/system/app.ardracloud.com/logs/proxy_access_ssl_log"; error_log "/var/www/vhosts/system/app.ardracloud.com/logs/proxy_error_log"; root "/var/www/vhosts/ardracloud.com/app.ardracloud.com/public"; #Error Handling error_page 497 https://$host:$server_port$request_uri; error_page 400 https://app.ardracloud.com:443$request_uri; location ^~ /.well-known/acme-challenge/ { root /var/www/vhosts/default/htdocs; types { } default_type text/plain; satisfy any; auth_basic off; allow all; location ~ ^/\.well-known/acme-challenge.*/\. { deny all; } } #extension letsencrypt end location / { proxy_read_timeout 1200s; proxy_pass https://127.0.0.1:7081/; #proxy_hide_header upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Accel-Internal /internal-nginx-static-location; access_log off; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_redirect http://127.0.0.1:7081/ https://app.ardracloud.com/; } location ^~ /internal-nginx-static-location/ { alias /var/www/vhosts/ardracloud.com/app.ardracloud.com/public/; internal; } location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) { proxy_pass https://127.0.0.1:7081; proxy_hide_header upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Accel-Internal /internal-nginx-static-location; access_log off; } disable_symlinks if_not_owner "from=/var/www/vhosts/ardracloud.com"; add_header X-Powered-By PleskLin; } map $upstream_http_location $redirect_uri { "~https://[^/]+/(?<location_uri>.*)$" "$location_uri"; } upstream origin { server app.ardracloud.com; } server { listen 66.66.66.66:80; server_name app.ardracloud.com; server_name www.app.ardracloud.com; server_name ipv4.app.ardracloud.com; client_max_body_size 134217728; access_log "/var/www/vhosts/system/app.ardracloud.com/logs/proxy_access_log"; error_log "/var/www/vhosts/system/app.ardracloud.com/logs/proxy_error_log"; location / { return 301 https://$host$request_uri; } location /api { return 301 https://$host$request_uri; } }
另外,我用curl -I测试了请求,得到的响应如下:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 18 Feb 2024 10:39:57 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://app.ardracloud.com/
再次测试的响应也是完全一样的:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 18 Feb 2024 10:39:57 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://app.ardracloud.com/
希望有经验的朋友能帮我分析下,到底是Nginx配置哪里出了问题,还是后端服务的重定向设置导致的?非常感谢!
备注:内容来源于stack exchange,提问作者Online Works

