所以,我有一个 URL Shortener 网站,我只想通过静态文件提供根路径,并通过 API 将其他路由重定向到目的地。
我用
location = /
找到了解决方案,但没有多大帮助。
server {
listen 443 ssl;
server_name domain.com;
...
# Home page
location = / {
root /usr/share/nginx/html;
index index.html;
}
# Redirects
location / {
proxy_pass http://api:3000/v1/urls/redirect$uri;
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;
}
}
指令
index
会导致内部重定向,并且请求可以在不同的位置处理,/
请求实际上将在第二个位置处理为/index.html
。server {
...
location = / {
index /c0g2af/index.html;
}
location / {
proxy_pass http://api:3000/v1/urls/redirect$uri;
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;
}
location /c0g2af/ {
root /usr/share/nginx/html;
}
}
在
/usr/share/nginx/html
中创建一个目录,并命名为随机代码,例如c0g2af
。