有个简单的 nginx 配置,目前运行没有问题,当前是这样的
server { # 端口和域名 listen 80; server_name localhost; # static 和 media 的地址 location /static/ { root /opt/izone; } location /media/ { root /opt/izone; } # web 服务使用 80 端口,并且添加别名跟本地域名保持一致 location / { proxy_pass http://web:8000; } # 其他配置 client_max_body_size 1m; client_header_buffer_size 128k; client_body_buffer_size 1m; proxy_buffer_size 32k; proxy_buffers 64 32k; proxy_busy_buffers_size 1m; proxy_temp_file_write_size 512k; }
现在我想实现的是当 url 是 /media/avatar/default.png (仅仅是这个 url,其他 media 下的不要跳转)的时候跳转到 /static/blog/img/default.png ,其他的 /media/还是保持原请求,我做了尝试,在现有的配置中添加如下配置
location /media/avatar/default.png { alias /static/blog/img/default.png; }
但是发现根本不起作用(我尝试了把这个新添加的配置放到原有的 /media/前面或者后面都不行,对 nginx 真心不熟悉,求个大佬指点一下
1 taolu 2019-07-02 21:08:13 +08:00 via Android location = /media/avatar/default.png =的优先级最高 |
2 arrow8899 2019-07-02 21:20:43 +08:00 location /media/avatar/default.png { rewrite ^/.*$ /static/blog/img/default.png break; } 或者 location /media/avatar/default.png { alias /opt/izone/blog/img/default.png } |
3 liwb2 2019-07-10 11:38:08 +08:00 location = /media/avatar/default.png { rewrite ^ /static/blog/img/default.png last; } |