我正在尝试在 Nginx 路由器后面运行一个应用程序。该应用程序在端口 3000 上运行,并为多个路由提供服务,例如/api
、/login
和/logout
。我还有一些要显示的静态内容/
以及/assets
文件夹。现在我的 nginx 配置如下所示:
server {
listen 80;
root /home/app/static;
index index.html;
location = / {
try_files $uri $uri/ index.html;
}
location ^~ (api|login|logout) {
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
我想(api|login|logout)
用某种万能方法代替。当我尝试简单地使用location / { ... }
时,nginx 出于某种原因代理到我的应用程序而不是显示静态内容。这是怎么回事?
答案1
你可以用这些块来实现location
:
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}