我对 / 上的 angular 前端和 /api/ 上的 node.js 后端进行了以下配置:
服务器 {
listen 80;
server_name example.com;
location / {
root /home/ubuntu/www/admin;
index index.html;
expires -1;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-ch$
try_files $uri $uri/ /index.html =404;
}
location /api/ {
proxy_pass http://127.0.0.1:8080/;
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-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这应该将 example.com/api/foo 传递给 127.0.0.1:8080/foo,但却传递了 127.0.0.1:8080//api/foo
我查看了很多示例配置,看来我正确设置了尾随斜杠,有人可以提供一些建议吗?
答案1
它完全按照预期工作。
您忘了将 重写/api
为/
。
尝试这个:
location /api/ {
rewrite ^/api(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8080;
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-Forwarded-For $proxy_add_x_forwarded_for;
}
答案2
以防有人遇到同样的问题,我意识到 ubuntu 存储库中的 nginx 不是完整版的 nginx。添加官方 PPA 并重新安装后,我的配置现在可以正常工作了。