我是Nginx的新手,我正在尝试基本的场景:为我的angular SPA提供服务,并公开在端口8000上的同一服务器上运行的API。下面是/etc/nginx/nginx.conf文件中的一个片段
server {
listen 80;
location / {
root /var/www/html;
try_files $uri $uri/ /index.html;
index index.html;
}
location /api/ {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection '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-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
error_log /var/log/nginx/error.log debug;
}
字符串
有了这个配置,我可以在http://{my-ip}上看到我的angular应用程序,但试图访问http://{my-ip}/api/{my-resourse-name}上的API总是导致Nginx 404。
我通过发出一个curl请求来确保我的API在服务器上运行正常。而且我的防火墙被禁用(以便端口80可用)。还尝试从location /api/
中删除尾随的/
我是否需要尝试以下操作?
location /api {
proxy_pass http://localhost:8000$request_uri;
}
型
有点不愿意在不知情的情况下做随机的事情。看起来好像请求根本没有传递到localhost:8000
。如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间7uzetpgm1#
你可以尝试以下方法:
字符串
这个API已经在
localhost:8000
上运行了,你可以在那里访问它吗?