【发布时间】:2022-11-13 17:12:28
【问题描述】:
我有两台 Nginx 服务器充当在端口 5000 和 5001 上运行的 nodejs 服务器的反向代理。 在端口 5000 上运行的用于普通表单上传 在端口 5001 上运行的另一个用于上传图像 在客户端,我所做的是用户填写表单(标题、描述和图像)后,首先将图像上传到图像服务器,然后将图像URL、标题和描述上传到正常然后是网络服务器。
问题
当客户端填写表格并单击上传时,如果图片上传成功则上传到普通服务器失败,或者如果正常服务器上传成功则上传到图片服务器失败。错误如下:(这可能适用于他们中的任何一个)
从源“https://blogs.vercel.app”访问“https://myserver.com/imagev2api/profile-upload-single”的 XMLHttpRequest 已被 CORS 策略阻止:否“访问控制允许源” ' 请求的资源上存在标头。
笔记:我在两个服务器(图像和普通服务器)上都使用了
app.use(cors())这是两个 nginx 服务器配置
图像服务器
upstream imageserver.com { server 127.0.0.1:5001; keepalive 600; } server { server_name imageserver.com; error_log /var/www/log/imagserver.com.error; access_log /var/www/log/imagserver.com.access; location / { proxy_pass http://imageserver.com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # fastcgi_split_path_info ^(.+\.php)(/.+)$; } listen 443 ssl http2; # managed by Certbot ssl_certificate /etc/letsencrypt/live/linoxcloud.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/linoxcloud.com/privkey.pem; # managed by Certbot ssl_protocols TLSv1.2 TLSv1.3 SSLv2 SSLv3; ssl_session_cache shared:SSL:5m; ssl_session_timeout 10m; ssl_session_tickets off; } server { if ($host = imageserver.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name imageserver.com; }普通服务器
upstream normalserver.com { server 127.0.0.1:5000; keepalive 600; } server { server_name normalserver.com; error_log /var/www/log/normalserver.com.error; access_log /var/www/log/normalserver.com.access; location / { proxy_pass http://normalserver.com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } listen 443 ssl http2; # managed by Certbot ssl_certificate ...; # managed by Certbot ssl_certificate_key ...; # managed by Certbot ssl_protocols TLSv1.2 TLSv1.3 SSLv2 SSLv3; ssl_session_cache shared:SSL:5m; ssl_session_timeout 10m; ssl_session_tickets off; } server { if ($host = normalserver.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name normalserver.com; }一段时间以来,我一直试图通过尝试一切来克服这个问题。 参考:Two NGINX servers one passing CORS issue(但这并没有提供任何关于问题和解决方案的见解)
请问有什么可能的修复方法吗?
【问题讨论】: