需求:
为gerrit插件avatars-external提供avatar服务,当用户.png不存在时,调用接口生成,已经存在直接返回。
这里用到nginx反向代理、try_files alias
重命名根目录,这里用alias重命名请求路径,当文件存在直接返回,不存在则走@genpic标记
因为location @genpic里面proxy_pass不能有uri,所以又起了一个8899服务,到后端接口服务。
server {
listen 80;
# avatar
location /avatar/ {
alias /opt/workspace/py-project/myback/upload/avatars/;
try_files $uri @genpic;
}
location @genpic {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8899;
}
}
# avatar proxy_pass to generate new picture
server {
listen 8899;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8000/api/v1/;
}
}
访问
http://example.com/avatar/username.png
首先找/opt/workspace/py-project/myback/upload/avatars/username.png存不存在,不存在则到8899服务生成并返回