【发布时间】:2019-01-26 08:01:10
【问题描述】:
编辑 2
经过更多测试,我发现该站点正在连接到我的开发计算机的 Express。在开发计算机上运行 node ./bin/www 时,AWS 上的站点与其交互并正常运行。
当 dev Express 没有运行时,网站会产生这个错误,“Http failure response for (unknown url): 0 Unknown Error.”
生产服务器的 Express 在这两种情况下都在运行,但该站点未连接到生产 Express。不过,该站点在刷新页面时使用 nginx 回退到 index.html。
我检查了我的 Angular、server.js 和 www 文件中的特定 IP 地址,但我没有看到,也不记得设置了一个。我确实在我的开发计算机上构建了生产 Angular 包(并将其通过 FTP 传输到生产系统中),但 Angular deployment docs 似乎说没关系。
我当前的nginx文件如下:
upstream api {
server <specific production server IP>:3000;
}
server {
listen 80;
server_name *******.compute.amazonaws.com;
root /var/www/project/code/dist/project;
index index.html index.htm;
include /etc/nginx/mime.types;
location / {
try_files $uri$args $uri$args/ /index.html;
}
location /api/ {
rewrite /asdf(.*) $1 break;
proxy_pass http://api;
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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
有没有人有任何建议来解决这个问题或了解我做错了什么?
下面是原帖 带有 nginx 的 Angular 6 应用程序中的“(未知 url)的 Http 失败响应:0 未知错误”
我正在尝试在 AWS Ubuntu 服务器和 nginx 上部署 Angular 6 应用程序。 Angular 应用程序位于 dist 文件夹中。 Express 服务器正在http://localhost:3000 上运行。我遇到的问题是当我尝试提交表单数据时收到以下错误:“(未知 url)的 Http 失败响应:0 未知错误”。
我从this site 读到我可以包含下面显示的代码,但它似乎与 response to this post 中提到的 try_files 冲突。
server {
listen 80;
server_name http://*******.compute.amazonaws.com;
root <path/to/dist>;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
/* Code recommended for CORS */
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
}
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:3000;
proxy_redirect off;
}
我尝试了以下方法:
- 将 cors 标头添加到我的 server.js (ref)
- 在 location / 和 location /api 块(ref、ref)中添加不带 if 语句的较短标头
- 删除 try_files - 仍然出现相同的 cor 消息
- 在 if 标签内添加 try_files (ref)
编辑 1
自从最初发布以来,我已经在 Express 服务器上尝试了一些工作,而不仅仅是 nginx 文件。
是否有人对如何修复此错误消息有任何建议?我认为我的 nginx 设置的可用站点文件没有正确合并 cors,但是无论我做出什么更改,我都看不到如何让它工作。任何帮助将不胜感激。
【问题讨论】:
标签: node.js angular express nginx cors